golang连接并操作mysql数据库的关键步骤如下:1.安装驱动包,使用go get -u github.com/go-sql-driver/mysql下载驱动,并在代码中通过import \_ "github.com/go-sql-driver/mysql"引入;2.连接数据库,使用sql.open()函数传入驱动名和连接字符串建立连接,并通过ping检查连通性;3.执行查询与插入操作,queryrow用于查询单条数据,query用于获取多条数据,exec用于执行插入语句;4.设置连接池参数,推荐配置db.setmaxopenconns、db.setmaxidleconns和db.setconnmaxlifetime优化性能。掌握这些步骤即可实现稳定可靠的数据库访问。

Golang连接并操作MySQL数据库,主要依赖标准库database/sql配合第三方驱动实现。常用的驱动是go-sql-driver/mysql,它实现了database/sql接口,可以满足大多数数据库操作需求。

下面从实际开发角度出发,介绍几个关键步骤和使用技巧。

要让Go程序支持MySQL,首先要安装MySQL驱动:
立即学习“go语言免费学习笔记(深入)”;
go get -u github.com/go-sql-driver/mysql
这个命令会下载并安装驱动包。之后在代码中通过import _ "github.com/go-sql-driver/mysql"引入驱动(注意前面的下划线),这样Go才会注册该驱动,后续才能使用。

连接MySQL的核心是sql.Open()函数,传入驱动名和连接字符串:
db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/dbname")
if err != nil {
log.Fatal(err)
}"mysql":指定使用的驱动。user:password@tcp(...):格式为用户名、密码、地址等信息组成的DSN(Data Source Name)。sql.Open()并不会立即建立连接,而是“懒加载”,第一次使用时才真正连接。建议加上Ping检查是否连通:
err = db.Ping()
if err != nil {
log.Fatal("数据库无法连接:", err)
}适合用于查询一条记录的情况:
var name string
err := db.QueryRow("SELECT name FROM users WHERE id = ?", 1).Scan(&name)
if err != nil {
log.Println("查询失败:", err)
}
fmt.Println("用户名:", name)QueryRow()返回一个Row对象。.Scan()将结果映射到变量上。Scan()会报错,可以用errors.Is(err, sql.ErrNoRows)判断。如果需要获取多个结果,用Query():
rows, err := db.Query("SELECT id, name FROM users")
if err != nil {
log.Fatal(err)
}
defer rows.Close()
for rows.Next() {
var id int
var name string
err := rows.Scan(&id, &name)
if err != nil {
log.Println("读取行失败:", err)
continue
}
fmt.Println(id, name)
}rows.Close()释放资源。Next()方法逐行处理。执行INSERT语句使用Exec(),不会返回结果集:
result, err := db.Exec("INSERT INTO users (name) VALUES (?)", "Tom")
if err != nil {
log.Fatal(err)
}
lastId, _ := result.LastInsertId()
rowCnt, _ := result.RowsAffected()
fmt.Printf("最后插入ID: %d, 受影响行数: %d\n", lastId, rowCnt)LastInsertId()适用于自增主键。RowsAffected()返回受影响的行数。默认情况下,Go的连接池可能不够灵活,可以通过设置参数来优化性能:
db.SetMaxOpenConns(10) // 最大打开连接数 db.SetMaxIdleConns(5) // 最大空闲连接数 db.SetConnMaxLifetime(time.Minute * 5) // 连接最大存活时间
这些参数对高并发场景很重要,避免连接泄漏或频繁创建销毁带来的性能损耗。
基本上就这些常用操作了。虽然Go的标准库封装得比较底层,但结构清晰,也方便封装成更高级的工具函数或ORM层。只要理解sql.DB、Row、Rows这几个核心类型的行为,就能写出稳定可靠的数据库访问代码。
以上就是Golang如何连接并操作MySQL数据库 介绍database/sql标准用法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号