DBの接続
Go標準ライブラリのdatabase/sql
パッケージを利用して、DBに接続する方法を説明します。
database/sql
パッケージは、DB接続の作成と開放を自動で行います。また、アイドル接続の空きプールを維持します。
DBの接続方法
次はDBに接続するサンプルです。
package main
import (
"database/sql"
"log"
// SQLiteのドライバ
// database/sqlを経由して利用するため、ブランクインポートとする
_ "github.com/mattn/go-sqlite3"
)
func main() {
// ここでDBに接続されるとは限らない
db, err := sql.Open("sqlite3", "./sqlite.db")
if err != nil {
log.Fatal(err)
}
defer db.Close()
// DBの接続確認
if err := db.Ping(); err != nil {
log.Fatal(err)
}
}
sql.Open
関数を使ってDB接続情報を設定します。
第一引数にドライバ名、第二引数にデータソース名(SQLiteの場合はデータベース保存先のパス)を指定します。
db, err := sql.Open("sqlite3", "./sqlite.db")
sql.Open
は関数名からDB接続をするように思えますが、実際に接続されるとは限りません。
接続情報(引数)のチェックだけを行っている可能性があります。
そのため、実際に接続の有効性を確認するにはDB.Ping
メソッドを実行します。
err := db.Ping()
接続設定
DB接続についての設定は次の通り行えます。
// 最大アイドル時間。0は無制限
db.SetConnMaxIdleTime(0)
// 最大接続再利用時間。0は無制限
db.SetConnMaxLifetime(0)
// アイドル接続の最大数。0は保持しない
db.SetMaxIdleConns(1)
// オープン接続の最大数。0は無制限
db.SetMaxOpenConns(2)