在 go 应用程序中集成 google cloud sql 数据库涉及使用流行的 go 框架,例如 gorm 和 x/sql,与 cloud sql 数据库建立连接。这些框架提供便捷的方法来管理数据库连接和执行 crud 操作。通过使用 gorm 或 x/sql 与 cloud sql 建立连接,可以轻松访问和管理云中的关系数据库。
Go框架中集成Google Cloud SQL数据库
简介
在Go应用程序中集成Google Cloud SQL数据库是访问和管理云中关系数据库的必要步骤。本文将向你展示如何使用流行的Go框架,例如GORM和x/sql,与Cloud SQL数据库建立连接。
先决条件
- 安装Go并配置Go路径
- 创建Cloud SQL实例
- 为Cloud SQL创建服务账号
使用GORM
GORM是一个流行的ORM,它提供了一个与数据库交互的简单、直观的接口。要使用GORM与Cloud SQL连接,请执行以下步骤:
import ( "context" "fmt" "io" "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql" ) // connectToCloudSQL establishes a connection to the Cloud SQL instance, // using GORM and the provided database connection parameters. func connectToCloudSQL(w io.Writer, dbUser, dbPwd, dbName string) (*gorm.DB, error) { // Note: Saving credentials in environment variables is convenient, but not // secure - consider a more secure solution such as // Cloud Secret Manager (https://cloud.google.com/secret-manager) to help // keep secrets safe. var ( dbUser = os.Getenv("DB_USER") // e.g. 'my-db-user' dbPwd = os.Getenv("DB_PASS") // e.g. 'my-db-password' dbName = os.Getenv("DB_NAME") // e.g. 'my-database' dbPort = os.Getenv("DB_PORT") // e.g. '3306' dbTCPHost = os.Getenv("INSTANCE_HOST") // e.g. '127.0.0.1' ('172.17.0.1' if deployed to GAE Flex) ) dbURI := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?parseTime=true", dbUser, dbPwd, dbTCPHost, dbPort, dbName) // dbPool is the pool of database connections. dbPool, err := gorm.Open("mysql", dbURI) if err != nil { return nil, fmt.Errorf("gorm.Open: %v", err) } configureDB(dbPool) _, err = createTable(dbPool, w) if err != nil { return nil, fmt.Errorf("createTable: %v", err) } return dbPool, nil }
登录后复制
使用x/sql
x/sql是Go标准库中用于直接与数据库交互的包。使用x/sql与Cloud SQL建立连接,请执行以下步骤:
import ( "context" "database/sql" "fmt" "io" _ "github.com/go-sql-driver/mysql" ) // connectWithXSQL establishes a connection to the Cloud SQL instance, // using the x/sql package and the provided database connection parameters. func connectWithXSQL(w io.Writer, dbUser, dbPwd, dbName string) (*sql.DB, error) { var ( dbUser = os.Getenv("DB_USER") // e.g. 'my-db-user' dbPwd = os.Getenv("DB_PASS") // e.g. 'my-db-password' dbName = os.Getenv("DB_NAME") // e.g. 'my-database' dbPort = os.Getenv("DB_PORT") // e.g. '3306' dbTCPHost = os.Getenv("INSTANCE_HOST") // e.g. '127.0.0.1' ('172.17.0.1' if deployed to GAE Flex) ) dbURI := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?parseTime=true", dbUser, dbPwd, dbTCPHost, dbPort, dbName) // dbPool is the pool of database connections. dbPool, err := sql.Open("mysql", dbURI) if err != nil { return nil, fmt.Errorf("sql.Open: %v", err) } configureDB(dbPool, w) _, err = createTable(dbPool, w) if err != nil { return nil, fmt.Errorf("createTable: %v", err) } return dbPool, nil }
登录后复制
实战案例
以下是一个使用GORM与Cloud SQL数据库进行交互的实际示例:
func main() { ctx := context.Background() dbPool, err := connectToCloudSQL(os.Stdout, "user", "password", "test") if err != nil { log.Fatal(err) } defer dbPool.Close() type User struct { ID int `gorm:"primary_key"` Name string } // Migrate the schema dbPool.AutoMigrate(&User{}) // Create user := User{Name: "John"} dbPool.Create(&user) // Read var retrievedUser User dbPool.First(&retrievedUser, user.ID) fmt.Fprintf(os.Stdout, "Retrieved user: %+vn", retrievedUser) // Update dbPool.Model(&retrievedUser).Update("Name", "Jane") // Delete dbPool.Delete(&retrievedUser) }
登录后复制
以上就是Golang框架如何集成Google Cloud SQL数据库?的详细内容,更多请关注叮当号网其它相关文章!
文章来自互联网,只做分享使用。发布者:走不完的路,转转请注明出处:https://www.dingdanghao.com/article/708695.html