パッケージ google.golang.org/appengine/cloudsql(v1.6.8)

cloudsql パッケージは、Google Cloud SQL データベースへのアクセスを公開します。

このパッケージは、App Engine の「フレキシブル環境」では動作しません。

これは、App Engine 固有の接続を行う MySQL ドライバ用のパッケージです。このパッケージをアプリケーションで使用するには、database/sql が必要です。このパッケージに対応する Go MySQL ドライバを選択して、sql.Open に cloudsql プロトコルと Cloud SQL インスタンスのアドレスを指定します。

Cloud SQL で動作確認されている Go MySQL ドライバは go-sql-driver です。

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

db, err := sql.Open("mysql", "user@cloudsql(project-id:instance-name)/dbname")

また、mymysql ドライバも Cloud SQL に対応しています。

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

db, err := sql.Open("mymysql", "cloudsql:instance-name*dbname/user/password")

このいずれかのドライバを使用して、標準の SQL クエリを実行します。次の例では、「users」というテーブル名に「first_name」と「last_name」という列が存在することを前提としています。

rows, err := db.Query("SELECT first_name, last_name FROM users")
if err != nil {
    log.Errorf(ctx, "db.Query: %v", err)
}
defer rows.Close()

for rows.Next() {
    var firstName string
    var lastName string
    if err := rows.Scan(&firstName, &lastName); err != nil {
        log.Errorf(ctx, "rows.Scan: %v", err)
        continue
    }
    log.Infof(ctx, "First: %v - Last: %v", firstName, lastName)
}
if err := rows.Err(); err != nil {
    log.Errorf(ctx, "Row error: %v", err)
}

関数

func Dial

func Dial(instance string) (net.Conn, error)

Dial は、指定された Cloud SQL インスタンスに接続します。