tencent cloud

TDSQL Boundless

产品动态
产品简介
产品概述
应用场景
产品架构
实例类型
兼容性说明
使用规范建议
自研内核
内核概述
内核版本更新动态
功能类特性
性能类特性
产品计费
计费概述
购买方式
价格详情
续费说明
欠费说明
退费说明
快速入门
创建实例
连接实例
用户指南
数据迁移
数据同步/订阅
实例管理
参数配置
账号管理
安全组
备份与恢复
数据库审计
标签管理
实践教程
Online DDL 的技术演进与使用实践
锁机制解析与问题排查实践
数据智能调度及相关性能优化实践
TDSQL Boundless 选型指南与实践教程
开发指南
开发指南(MySQL 兼容模式)
开发指南(HBase 兼容模式)
性能调优
性能调优概述
SQL 调优
DDL 调优
性能白皮书
性能概述
TPC-C 测试
Sysbench 测试
API 文档
History
Introduction
API Category
Making API Requests
Instance APIs
Security Group APIs
Task APIs
Backup APIs
Rollback APIs
Parameter APIs
Database APIs
Data Types
Error Codes
通用参考
系统原理
SQL 参考
数据库参数说明
TPC-H 基准测试数据模型参考
错误码信息
安全与合规
常见问题
服务协议
服务等级协议
服务条款
隐私政策
数据处理和安全协议
联系我们
词汇表

Go

PDF
聚焦模式
字号
最后更新时间: 2026-03-06 18:48:24

使用 Go MySQL Driver

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

安装驱动

在使用 Go MySQL Driver 之前,需要先安装驱动:
go get -u github.com/go-sql-driver/mysql

基本操作示例

连接数据库

package main

import (
"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/gorm
go get -u gorm.io/driver/mysql

连接 TDSQL Boundless

连接字符串格式

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

示例连接代码

package main

import (
"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")
}

CRUD 操作示例

创建记录

// 创建单个用户
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)

查询记录

// 查询单个用户
var user User
db.First(&user, 1) // 通过主键查询
db.First(&user, "name = ?", "张三") // 通过条件查询

// 查询多个用户
var users []User
db.Find(&users) // 查询所有用户
db.Where("age > ?", 25).Find(&users) // 条件查询

更新记录

// 更新单个字段
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))

删除记录

// 删除单个记录
db.Delete(&user)

// 条件删除
db.Where("name = ?", "李四").Delete(&User{})

// 软删除(如果模型包含gorm.Model)
db.Delete(&user) // 只会设置deleted_at字段

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈