sql >> データベース >  >> RDS >> Mysql

GoからMySQLに接続するための推奨される方法は何ですか?

    いくつかのドライバーが利用可能ですが、 database /sql を実装するドライバーのみを検討する必要があります。 API as

    • クリーンで効率的な構文を提供します
    • インポートと接続を除いて、コードを変更せずに後でドライバーを変更できるようにします。

    MySQLでは2つの高速で信頼性の高いドライバーを利用できます:

    私は両方を本番環境で使用しました。プログラムは数か月間実行されており、接続数は数百万に達します。

    その他のSQLデータベースドライバーgo-wikiにリストされています 。

    MyMySQLを使用する場合のインポート:

    import (
        "database/sql"
        _ "github.com/ziutek/mymysql/godrv"
    )
    

    Go-MySQL-Driverを使用する場合のインポート:

    import (
        "database/sql"
        _ "github.com/go-sql-driver/mysql"
    )
    

    MyMySQLを使用した接続と終了:

    con, err := sql.Open("mymysql", database+"/"+user+"/"+password)
    defer con.Close()
    // here you can use the connection, it will be closed when function returns
    

    Go-MySQL-Driverを使用した接続と終了:

    con, err := sql.Open("mysql", store.user+":"+store.password+"@/"+store.database)
    defer con.Close()
    

    1つの行を選択してください:

    row := con.QueryRow("select mdpr, x, y, z from sometable where id=?", id)
    cb := new(SomeThing)
    err := row.Scan(&cb.Mdpr, &cb.X, &cb.Y, &cb.Z)
    

    複数の行を選択し、結果を含む配列を作成します:

    rows, err := con.Query("select a, b from item where p1=? and p2=?", p1, p2)
    if err != nil { /* error handling */}
    items := make([]*SomeStruct, 0, 10)
    var ida, idb uint
    for rows.Next() {
        err = rows.Scan(&ida, &idb)
        if err != nil { /* error handling */}
        items = append(items, &SomeStruct{ida, idb})
    }
    

    挿入:

    _, err = con.Exec("insert into tbl (id, mdpr, isok) values (?, ?, 1)", id, mdpr)
    

    Go with MySQLでの作業は楽しい経験であることがわかります:私は決して 問題が発生したため、サーバーはエラーやリークなしで数か月間稼働しました。ほとんどの関数が可変数の引数を取るだけであるという事実は、多くの言語で面倒な作業を軽減します。

    将来、別のMySQLドライバーを使用する必要がある場合は、1つのgoファイルの2行(インポートを実行する行と接続を開く行)を変更するだけでよいことに注意してください。



    1. SQLの別の列に基づいて列を更新する方法

    2. 127.0.0.1:3306でmysqlへの接続に失敗し、ユーザー'root' @'localhost'のユーザーrootアクセスが拒否されました(パスワード:YESを使用)

    3. Oracleで、UTF8を表示するようにセッションを変更するにはどうすればよいですか?

    4. SQL Server(MSSQL DBA)初心者向けデータベースチュートリアルデータベース管理者