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
Dial は、指定された Cloud SQL インスタンスに接続します。