[解決済み] GoからMySQLに接続するおすすめの方法は?
2022-04-24 18:47:06
質問
GoからMySQLデータベースに接続するための信頼できるソリューションを探しています。いくつかのライブラリを見かけましたが、完全性と現在のメンテナンスの異なる状態を判断することは困難です。私は複雑なニーズを持っていませんが、私は人々が何を頼りにしているか、またはMySQLに接続するための最も標準的なソリューションが何であるかを知りたいのです。
解決方法は?
ドライバはいくつかありますが データベース/SQL としてAPIを提供します。
- は、クリーンで効率的な構文を提供します。
- インポートと接続を除けば、コードを変更することなくドライバを変更することができます。
MySQL 用の高速で信頼性の高い 2 つのドライバが利用可能です。
私はこの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とMySQLの連携が楽しいことはおわかりいただけたと思います : I 決して 私のサーバーは数ヶ月間、エラーも漏れもなく動いています。ほとんどの関数が可変数の引数を取るだけなので、多くの言語では面倒な作業が軽減されます。
将来、他の MySQL ドライバを使用する必要がある場合は、1 つの go ファイルで 2 行を変更するだけでよいことに注意してください: インポートを行う行と接続を開く行です。
関連
-
Mysqlデータベースの手動および定期的なバックアップ手順
-
[解決済み】MySQL エラー 1093 - FROM 句で更新のターゲット テーブルを指定できません。
-
'INSERT文はFOREIGN KEY制約「FK_TourismReservation_Users」と競合していました。その
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] MySQLでコマンドラインを使用してユーザーアカウントのリストを取得するにはどうすればよいですか?
-
[解決済み] ずっとUTF-8
-
[解決済み] utf8_general_ciとutf8_unicode_ciの違いは何ですか?
-
[解決済み] 各グループの最後のレコードを取得する - MySQL
-
[解決済み] MySQLデータベースのテーブルのサイズを取得する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
MySQLデータベース・インデックスの左端一致の原則
-
ジョイントインデックスのためのmysqlの条件とインデックスが失敗するための条件
-
MySQLのLike演算子に関する詳細
-
MySQLデータベースでvarchar型の数値の大きさを比較する方法
-
Mysqlデータベースの手動および定期的なバックアップ手順
-
MySql認証ベースのvsftpd仮想ユーザー
-
面接では選択式で聞かれましたが......。.for updateはテーブルをロックするか、行をロックするか?
-
MySQLインストールチュートリアル(Linux版
-
[解決済み] 1つのSQLクエリで複数のカウントを取得する方法は?
-
[解決済み] MySQLのAUTO_INCREMENTをリセットする方法