タグ

golangとsqlに関するwkubotaのブックマーク (2)

  • Goのsql.DBは、いつプールに戻しているのか

    はじめに 鍵を閉め忘れたような気がして心配になるように、リソースを後始末していたか心配になることはありませんか。 「習慣的にdeferでCloseしてるからリークしないはずたけど。あれ?トランザクションはしてなかったかも。ん?Closeないの!?」 Goの標準ライブラリの database/sql で中心となる sql.DB ではデフォルトでコネクションプールが使われるようになっていて明示的な操作は不要です。 ではいったい、どのタイミングでプールに返却されているのか、パターンを整理してみました。 準備 挙動の確認でINSERTやSELECTを実行するため、PostgreSQLに簡易なテーブルを作成しました。 CREATE TABLE shop ( id serial PRIMARY KEY, name text NOT NULL, created_at timestamp with tim

    Goのsql.DBは、いつプールに戻しているのか
  • SQLを含めたユニットテストにgo-mysql-serverが便利

    go-mysql-serverは、ピュアGoで書かれたMySQL互換のインメモリDBです。 READMEにあるようにサーバとして起動することもできますが、 database/sql/driverのDriverも用意されているので、プロセス内で完結することもできます。 このインメモリDBをいろいろなORMと組み合わせてユニットテストで使う方法を紹介します。 sqlc sqlx GORM ent go-mysql-server/driverの使い方 サンプル実装を用意したのであわせてご覧ください。 https://github.com/makiuchi-d/testdb ⚠ 現在の最新リリース(0.16.0)にはDriverにいくつかバグがあります。 修正PRはすでに取り込まれているので、 go get 時にはlatestではなくHEADを指定して下さい。 修正済みバージョンのリリースは10〜

  • 1