| // Copyright 2013 Google Inc. All rights reserved. | |
| // Use of this source code is governed by the Apache 2.0 | |
| // license that can be found in the LICENSE file. | |
| /* | |
| Package cloudsql exposes access to Google Cloud SQL databases. | |
| This package does not work in App Engine "flexible environment". | |
| This package is intended for MySQL drivers to make App Engine-specific | |
| connections. Applications should use this package through database/sql: | |
| Select a pure Go MySQL driver that supports this package, and use sql.Open | |
| with protocol "cloudsql" and an address of the Cloud SQL instance. | |
| A Go MySQL driver that has been tested to work well with Cloud SQL | |
| is the 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") | |
| Another driver that works well with Cloud SQL is the mymysql driver: | |
| import "database/sql" | |
| import _ "github.com/ziutek/mymysql/godrv" | |
| db, err := sql.Open("mymysql", "cloudsql:instance-name*dbname/user/password") | |
| Using either of these drivers, you can perform a standard SQL query. | |
| This example assumes there is a table named 'users' with | |
| columns 'first_name' and '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) | |
| } | |
| */ | |
| package cloudsql | |
| import ( | |
| "net" | |
| ) | |
| // Dial connects to the named Cloud SQL instance. | |
| func Dial(instance string) (net.Conn, error) { | |
| return connect(instance) | |
| } |