TDSQL Boundless Go

这篇档介绍如何使用 Go 语言的 MySQL 驱动程序对 TDSQL Boundless 进行数据库操作,包括连接数据库、创建表、插入数据、更新数据和删除数据等基本操作。

相关产品
TDSQL Boundless 产品页,含版本规格、价格与购买入口。

二、安装驱动

在使用 Go MySQL Driver 之前,需要先安装驱动:

go get -u github.com/go-sql-driver/mysql

四、连接数据库

package mainimport ( "database/sql" "fmt" "log" _ "github.com/go-sql-driver/mysql")func main() { // 连接数据库 db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local") if err != nil { log.Fatal(err) } defer db.Close() // 测试连接 err = db.Ping() if err != nil { log.Fatal(err) } fmt.Println("Connected to MySQL database!")}

五、连接池配置

db.SetMaxOpenConns(25) // 最大连接数db.SetMaxIdleConns(5) // 最大空闲连接数db.SetConnMaxLifetime(5 * time.Minute) // 连接最大存活时间

六、创建表

 query := ` CREATE TABLE IF NOT EXISTS users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, email VARCHAR(100) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP )` _, err := db.Exec(query) if err != nil { log.Fatal(err) }

七、插入数据

query := "INSERT INTO users (username, email) VALUES (?, ?)" result, err := db.Exec(query, "john_doe", "john@example.com") if err != nil { log.Fatal(err) } id, err := result.LastInsertId() if err != nil { log.Fatal(err) }

八、更新数据

query := "UPDATE users SET email = ? WHERE username = ?" result, err := db.Exec(query, "new_email@example.com", "john_doe") if err != nil { log.Fatal(err) } rowsAffected, err := result.RowsAffected() if err != nil { log.Fatal(err) }

九、删除数据

query := "DELETE FROM users WHERE username = ?" result, err := db.Exec(query, "john_doe") if err != nil { log.Fatal(err) } rowsAffected, err := result.RowsAffected() if err != nil { log.Fatal(err) }

十、使用 GORM 框架

GORM 是一个流行的 Go 语言 ORM 库,支持多种数据库,包括 TDSQL Boundless。本指南将介绍如何使用 GORM 连接腾讯云数据库 TDSQL Boundless,并执行基本的 CRUD 操作。

十一、安装依赖

go get -u gorm.io/gormgo get -u gorm.io/driver/mysql

十三、连接字符串格式

dsn := "user:password@tcp(host:port)/dbname?charset=utf8mb4&parseTime=True&loc=Local"

十四、示例连接代码

package mainimport ( "gorm.io/driver/mysql" "gorm.io/gorm")func main() { dsn := "root:yourpassword@tcp(127.0.0.1:3306)/yourdb?charset=utf8mb4&parseTime=True&loc=Local" db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{}) if err != nil { panic("failed to connect database") } // 使用db对象进行数据库操作…}

十六、定义模型结构体

type User struct { gorm.Model Name string Email string `gorm:"unique"` Age int}

十七、自动迁移创建表

// 自动迁移模式err = db.AutoMigrate(&User{})if err != nil { panic("failed to migrate database")}

十九、创建记录

// 创建单个用户user := User{Name: "张三", Email: "zhangsan@example.com", Age: 25}result := db.Create(&user)if result.Error != nil { panic(result.Error)}// 批量创建users := []User{ {Name: "李四", Email: "lisi@example.com", Age: 30}, {Name: "王五", Email: "wangwu@example.com", Age: 28},}db.Create(&users)

20、查询记录

// 查询单个用户var user Userdb.First(&user, 1) // 通过主键查询db.First(&user, "name = ?", "张三") // 通过条件查询// 查询多个用户var users []Userdb.Find(&users) // 查询所有用户db.Where("age > ?", 25).Find(&users) // 条件查询

21、更新记录

// 更新单个字段db.Model(&user).Update("name", "张三新名字")// 更新多个字段db.Model(&user).Updates(User{Name: "张三新名字", Age: 26})// 条件更新db.Model(&User{}).Where("age < ?", 30).Update("age", gorm.Expr("age + ?", 1))

22、删除记录

// 删除单个记录db.Delete(&user)// 条件删除db.Where("name = ?", "李四").Delete(&User{})// 软删除(如果模型包含gorm.Model)db.Delete(&user) // 只会设置deleted_at字段

赞 (0)
上一篇 4天前
下一篇 4天前