当前位置: 首页 > news >正文

Go语言实战案例:连接MySQL数据库

在后端开发中,MySQL 是最常用的关系型数据库之一。Go 语言通过官方的 database/sql 包和 MySQL 驱动,可以方便地与 MySQL 建立连接,并执行增删改查操作。

本篇将带你从零开始,使用 Go 连接 MySQL 数据库,并验证连接是否成功。


一、准备工作

1. 安装 MySQL

如果你本地还没有 MySQL,可以通过以下方式安装:

  • • Windows/Mac 用户:从 MySQL 官方网站 下载并安装。
  • • Linux 用户:
sudo apt install mysql-server     # Debian/Ubuntu
sudo yum install mysql-server     # CentOS

启动 MySQL:

mysql -u root -p

2. 创建测试数据库与表

登录 MySQL 后执行:

CREATE DATABASE go_demo;
USE go_demo;CREATE TABLE users (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50),age INT
);INSERT INTO users (name, age) VALUES
('Alice', 25),
('Bob', 30);

二、安装 MySQL 驱动

Go 并没有内置 MySQL 驱动,需要安装第三方驱动 go-sql-driver/mysql

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

三、代码实现

main.go

package mainimport ("database/sql""fmt""log"_ "github.com/go-sql-driver/mysql" // MySQL 驱动
)func main() {// 1. 定义 MySQL DSN(数据源名称)dsn := "root:password@tcp(127.0.0.1:3306)/go_demo?charset=utf8mb4&parseTime=True&loc=Local"// 2. 打开数据库连接(并不会立即建立物理连接)db, err := sql.Open("mysql", dsn)if err != nil {log.Fatalf("连接数据库失败: %v", err)}defer db.Close()// 3. 测试连接是否可用if err := db.Ping(); err != nil {log.Fatalf("无法连接到数据库: %v", err)}fmt.Println("成功连接到 MySQL 数据库!")// 4. 查询数据rows, err := db.Query("SELECT id, name, age FROM users")if err != nil {log.Fatalf("查询失败: %v", err)}defer rows.Close()for rows.Next() {var id intvar name stringvar age intif err := rows.Scan(&id, &name, &age); err != nil {log.Fatalf("读取数据失败: %v", err)}fmt.Printf("用户ID:%d, 姓名:%s, 年龄:%d\n", id, name, age)}
}

四、运行结果

假设我们已经启动了 MySQL 并且数据已插入,执行:

go run main.go

输出:

成功连接到 MySQL 数据库!
用户ID:1, 姓名:Alice, 年龄:25
用户ID:2, 姓名:Bob, 年龄:30

五、注意事项

  1. 1. DSN 格式
    username:password@tcp(host:port)/dbname?charset=utf8mb4&parseTime=True&loc=Local
    • • parseTime=True 让 MySQL 日期类型自动解析为 time.Time
    • • charset=utf8mb4 支持 Emoji 等多字节字符。
  2. 2. 连接池设置
    在生产环境中应设置连接池:
    db.SetMaxOpenConns(10) // 最大连接数
    db.SetMaxIdleConns(5)  // 最大空闲连接数
  3. 3. 错误处理
    每次执行查询或写入操作时,都要检查 err

六、总结

  • • Go 使用 database/sql 配合 go-sql-driver/mysql 可以方便地连接 MySQL。
  • • 连接数据库的关键步骤:安装驱动 → 配置 DSN → 打开连接 → Ping 测试。
  • • 在生产环境中,要注意连接池、错误处理、以及防止 SQL 注入(使用 Prepare 或参数化查询)。

http://www.dtcms.com/a/333884.html

相关文章:

  • webrtc弱网-VideoSendStreamImpl类源码分析与算法原理
  • debian 13 显示中文字体 不再显示菱形块 终端显示中文
  • OpenCompass傻瓜式入门教程
  • 命令模式C++
  • Point-LIO技术文档中文翻译解析
  • 【计算机组成原理】第四章:指令系统
  • 使用vscode插件(c cpp cmake project creator)自动生成C++程序模板
  • LeetCode 283.移动零
  • C语言:指针(5)
  • break的使用大全
  • 基于STM32单片机的智能粮仓温湿度检测蓝牙手机APP设计
  • YAML:锚点深度解析,告别重复,拥抱优雅的配置艺术
  • 初识CNN02——认识CNN2
  • 浏览器面试题及详细答案 88道(45-55)
  • MyBatis 与 MyBatis-Plus 的区别
  • 20day-人工智能-机器学习-线性回归
  • 数据处理与统计分析 —— numpy入门
  • @mcp.tool如何从函数定义映射到llm系统输入
  • Kotlin作用域函数全解:run/with/apply/let/also与this/it的魔法对决
  • LORA模块的通讯速率(915Mhz)以及通道数量规划
  • 图片滤镜处理(filters)
  • 【机器学习深度学习】生成式评测
  • 数据处理分析环境搭建+Numpy使用教程
  • Design Compiler:使用IC Compiler II Link
  • PCA降维 提升模型训练效率
  • CUDA TensorRT Python智能提示补全解决方案
  • MySQL约束知识点
  • iceberg 底层存储HDFS与juiceFS的区别
  • epoll发数据学习
  • 自己开发的VIP monitor通过TLM port口连接到RefenceModel 但是get不出transaction的问题