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)