Go语言操作MySQL数据库完整示例与细节解析

巷口听风
巷口听风
发布时间:2026-10-14| 3人浏览过
原创

Go语言操作关系型数据库主要依赖标准库 database/sql 配合具体的数据库驱动(如 github.com/go-sql-driver/mysql)。本示例展示了从建立连接、执行参数化插入到查询遍历结果的完整流程,重点解析了Go中与日期时间处理相关的特殊语法及注意事项。

开发准备与环境配置

在开始编写代码前,需要确保本地已安装 Go 语言环境并配置好 GOPATH 或 Go Modules。本项目需要引入两个核心组件:

  • 标准库:database/sql,提供数据库操作的接口规范。
  • 第三方驱动:github.com/go-sql-driver/mysql,实现 MySQL 协议的驱动。

测试用表结构如下,用于验证插入和查询功能:

create table t(
    id int primary key auto_increment,
    name varchar(20) not null,
    ts timestamp
);

建立数据库连接

在 main 函数中,首先需要获取数据库连接句柄。Go 使用 sql.Open 打开数据源名称(DSN)。

db, err := sql.Open("mysql", "xx:xx@tcp(127.0.0.1:3306)/mvbox?charset=utf8")
if err != nil {
    log.Fatalf("Open database error: %s\n", err)
}
defer db.Close()

注意:此时并未真正建立网络连接。为了确保连接可用,必须调用 Ping 方法进行验证:

err = db.Ping()
if err != nil {
    log.Fatal(err)
}

执行插入操作与时间处理

数据库操作推荐使用 Prepare 语句以实现参数化查询,防止 SQL 注入。在 Go 中,占位符为 ?(MySQL 驱动自动转换)。

第1步:预处理插入语句

目的:编译 SQL 语句以提高后续执行效率。

复制代码 代码如下:
package main import ( "database/sql" _ "github.com/go-sql-driver/mysql" "log" "time" ) func insert(db *sql.DB) { // 预处理 SQL,注意 Go 中使用 "?" 作为占位符 stmt, err := db.Prepare("insert into t(name,ts) values(?,?)") defer stmt.Close() if err != nil { log.Println(err) return } // 关键点:Go 的时间解析基准时间为 "2006-01-02 15:04:05" ts, _ := time.Parse("2006-01-02 15:04:05", "2014-08-28 15:04:00") // 执行插入 _, err = stmt.Exec("edmond", ts) if err != nil { log.Println("Insert error:", err) } }

时间处理说明:Java等语言拥有流畅的日期API,而Go默认解析时间字符串依赖于特定的锚定时间 Mon Jan 2 15:04:05 MST 2006。在代码中需严格遵循此格式定义时间布局。

第2步:查询数据与结果遍历

目的:从数据库中读取记录并映射到Go变量。

  1. 发起查询:使用 db.Query 返回行集合。
  2. 安全扫描:通过循环调用 rows.Scan 将列数据赋值给 Go 变量。
rows, err := db.Query("select id,name,ts from t where id>?", 1)
if err != nil {
    log.Println(err)
}
defer rows.Close()

var id int
var name string
var ts string

// 遍历每一行
for rows.Next() {
    err := rows.Scan(&id, &name, &ts)
    if err != nil {
        log.Fatal(err)
    }
    log.Println(id, name, ts)
}

// 检查遍历过程中的错误
err = rows.Err()
if err != nil {
    log.Fatal(err)
}

总结

通过以上步骤,我们完成了 Go 语言连接 MySQL 的核心流程。掌握 database/sql 的基本用法、正确配置 DSN、处理时间戳格式以及规范的资源释放(defer close),是构建稳定 Go 后端应用的基础。以上就是Go语言操作MySQL数据库完整示例与细节解析的详细内容,更多关于Go数据库编程的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。