google.golang.org/appengine/cloudsql 패키지(v1.6.8)

cloudsql 패키지는 Google Cloud SQL 데이터베이스에 대한 액세스를 노출시킵니다.

이 패키지는 App Engine '가변형 환경'에서 작동하지 않습니다.

이 패키지는 App Engine 전용 연결을 수행하는 MySQL 드라이버를 위한 것입니다. 애플리케이션은 데이터베이스/sql을 통해 이 패키지를 사용해야 합니다. 이 패키지를 지원하는 공식 Go MySQL 드라이버를 선택하고 프로토콜 'cloudsql'과 Cloud SQL 인스턴스의 주소로 sql.Open을 사용하세요.

테스트 결과 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")

Cloud SQL과 원활하게 작동하는 또 다른 드라이버는 mymysql 드라이버입니다.

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

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

이 두 가지 드라이버 중 하나를 사용하여 표준 SQL 쿼리를 수행할 수 있습니다. 이 예시에서는 'first_name'과 'last_name'이라는 열이 있는 'users'라는 이름의 표가 존재한다고 가정합니다.

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 인스턴스에 연결합니다.