Go语言在Linux下的数据库操作指南
导读:Go语言在Linux下的数据库操作指南 一 环境准备 安装 Go:在 CentOS 可直接使用包管理器安装,例如执行命令:sudo yum install golang;安装完成后执行 go version 验证版本。其他发行版(如 De...
Go语言在Linux下的数据库操作指南
一 环境准备
- 安装 Go:在 CentOS 可直接使用包管理器安装,例如执行命令:sudo yum install golang;安装完成后执行 go version 验证版本。其他发行版(如 Debian/Ubuntu)可使用相应的包管理命令或从官网下载安装包。
- 配置环境变量:在 ~/.bashrc 或 ~/.bash_profile 中添加(路径以实际安装为准):
export GOROOT=/usr/lib/golang
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
执行 source ~/.bashrc 使配置生效。 - 安装数据库:以 MySQL 为例,在 Ubuntu 可执行 sudo apt-get install mysql-server 并启动服务;在 CentOS 可使用系统自带的 MySQL 安装方式或官方仓库安装。
二 驱动选择与安装
- Go 使用标准库 database/sql 与驱动配合工作,常见驱动与用途如下:
数据库 驱动包 说明 MySQL github.com/go-sql-driver/mysql 纯 Go 实现,常用 DSN 方式连接 PostgreSQL github.com/lib/pq 社区广泛使用 SQLite github.com/mattn/go-sqlite3 嵌入式数据库,单文件 MongoDB go.mongodb.org/mongo-driver/mongo 非关系型数据库驱动 - 安装示例:
- MySQL:go get -u github.com/go-sql-driver/mysql
- PostgreSQL:go get -u github.com/lib/pq
- SQLite:go get -u github.com/mattn/go-sqlite3
- MongoDB:go get -u go.mongodb.org/mongo-driver/mongo
三 连接数据库与基本操作
- 连接 MySQL(推荐 DSN 参数化):
- 驱动注册:import ( “database/sql”; _ “github.com/go-sql-driver/mysql” )
- DSN 示例:dsn := “username:password@tcp(localhost:3306)/dbname?charset=utf8mb4& parseTime=True& loc=Local”
- 代码示例:
db, err := sql.Open(“mysql”, dsn)
if err != nil { log.Fatal(err) }
defer db.Close()
if err = db.Ping(); err != nil { log.Fatal(err) }
- 常见操作范式:
- 查询多行:使用 db.Query,遍历 rows.Next(),务必在循环后检查 rows.Err();
- 单行查询:使用 db.QueryRow;
- 增删改:使用 db.Exec,通过 LastInsertId() 获取自增 ID,通过 RowsAffected() 获取影响行数;
- 资源释放:查询务必 rows.Close(),数据库对象 defer db.Close()。
四 事务与高级用法
- 事务示例:
tx, err := db.Begin()
if err != nil { log.Fatal(err) }
_, err = tx.Exec(“UPDATE accounts SET balance = balance - ? WHERE id = ?”, 100, 1)
if err != nil { tx.Rollback(); log.Fatal(err) }
_, err = tx.Exec(“UPDATE accounts SET balance = balance + ? WHERE id = ?”, 100, 2)
if err != nil { tx.Rollback(); log.Fatal(err) }
if err = tx.Commit(); err != nil { log.Fatal(err) } - ORM 与 NoSQL:
- 使用 GORM(以 MySQL 为例):
import ( “gorm.io/driver/mysql”; “gorm.io/gorm” )
dsn := “user:password@tcp(127.0.0.1:3306)/dbname”
db, err := gorm.Open(mysql.Open(dsn), & gorm.Config{ } ) - 使用 MongoDB:
import ( “context”; “go.mongodb.org/mongo-driver/mongo”; “go.mongodb.org/mongo-driver/mongo/options” )
client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI(“mongodb://localhost:27017”))
- 使用 GORM(以 MySQL 为例):
- 连接池建议:在高并发场景下显式设置 MaxOpenConns / MaxIdleConns / ConnMaxLifetime,提升吞吐与稳定性。
五 运行与排错建议
- 运行与配置:
- 运行程序:在项目目录执行 go run main.go;
- 安全建议:将 用户名、密码、主机、端口、库名 等敏感信息放入 环境变量或配置文件,避免硬编码。
- 常见排错要点:
- 连接失败:核对 DSN、主机可达性、端口、用户权限;
- SQL 语法错误:在数据库客户端先验证 SQL;
- 性能问题:检查慢查询、索引缺失,结合连接池与语句优化。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Go语言在Linux下的数据库操作指南
本文地址: https://pptw.com/jishu/789349.html
