Golang如何与Linux数据库交互
在Golang中与Linux数据库交互:一份实用指南
当你在Golang项目中需要与运行在Linux环境下的数据库打交道时,通常会借助特定的数据库驱动和标准库来完成。这听起来可能有点技术性,但实际操作起来,流程相当清晰。下面,我们就来梳理几种主流数据库的交互方式,并附上可直接上手的代码示例。
免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

1. MySQL
要和MySQL数据库建立连接,社区首选的驱动是 go-sql-driver/mysql。它的使用非常普遍,生态也成熟。
第一步,自然是把驱动安装到你的工作环境中:
go get -u github.com/go-sql-driver/mysql
安装好后,就可以编写连接代码了。关键就在于构建那个格式正确的连接字符串(DSN):
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
// 连接字符串格式:用户名:密码@tcp(地址:端口)/数据库名?附加参数
dsn := "username:password@tcp(localhost:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
db, err := sql.Open("mysql", dsn)
if err != nil {
panic(err)
}
defer db.Close()
// 用Ping方法测试连接是否真正畅通
err = db.Ping()
if err != nil {
panic(err)
}
fmt.Println("Connected to MySQL!")
}
2. PostgreSQL
对于PostgreSQL,lib/pq 是经过时间考验的经典驱动,稳定性和性能都不错。
同样,先从安装驱动开始:
go get -u github.com/lib/pq
连接PostgreSQL的代码结构与MySQL类似,但连接字符串的格式有所不同,它更倾向于使用键值对的形式:
package main
import (
"database/sql"
"fmt"
_ "github.com/lib/pq"
)
func main() {
// 连接字符串格式:键=值 键=值 ...
connStr := "user=username dbname=dbname password=password sslmode=disable"
db, err := sql.Open("postgres", connStr)
if err != nil {
panic(err)
}
defer db.Close()
err = db.Ping()
if err != nil {
panic(err)
}
fmt.Println("Connected to PostgreSQL!")
}
3. SQLite
如果你需要的是轻量级的嵌入式数据库,SQLite是个好选择。这里推荐使用纯Go实现的 modernc.org/sqlite 驱动,它无需CGO,跨平台部署非常方便。
安装命令如下:
go get -u modernc.org/sqlite
连接SQLite就更加简单了,通常只需要指定数据库文件的路径即可。下面的示例还顺带演示了如何执行一条建表语句:
package main
import (
"database/sql"
"fmt"
_ "modernc.org/sqlite"
)
func main() {
// 连接字符串直接指向数据库文件路径
db, err := sql.Open("sqlite3", "./test.db")
if err != nil {
panic(err)
}
defer db.Close()
// 连接成功后,可以立即执行SQL操作,例如创建一张表
_, err = db.Exec(`CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)`)
if err != nil {
panic(err)
}
fmt.Println("Connected to SQLite!")
}
4. MongoDB
当数据模型不那么结构化时,MongoDB这类NoSQL数据库就派上用场了。官方提供的 go.mongodb.org/mongo-driver 是当前Go生态中的标准选择。
首先获取官方驱动:
go get -u go.mongodb.org/mongo-driver/mongo
连接MongoDB的代码模式与前几种关系型数据库略有不同,它需要创建一个客户端对象,并通过上下文(Context)来进行操作:
package main
import (
"context"
"fmt"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"log"
)
func main() {
// 通过连接URI设置客户端选项
clientOptions := options.Client().ApplyURI("mongodb://localhost:27017")
// 建立客户端连接
client, err := mongo.Connect(context.TODO(), clientOptions)
if err != nil {
log.Fatal(err)
}
// 验证连接是否成功
err = client.Ping(context.TODO(), nil)
if err != nil {
log.Fatal(err)
}
fmt.Println("Connected to MongoDB!")
}
以上就是Go语言连接几种常见Linux数据库的核心方法。可以看到,虽然不同数据库的驱动和连接细节各有差异,但整体思路是相通的:引入驱动、构建连接信息、建立连接并验证。在实际开发中,你只需要根据项目选用的数据库类型,对号入座地选择相应的驱动和连接方式即可。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
PHP-FPM在Ubuntu上的优化策略是什么
PHP-FPM 在 Ubuntu 的优化策略 想让你的Ubuntu服务器上的PHP应用跑得更快、更稳?优化PHP-FPM是关键一步。这不仅仅是改几个参数,更像是一场精细的资源调配与性能调优。下面,我们就从进程管理到系统层面,拆解一套行之有效的优化策略。 一 进程管理与资源配置 进程池是PHP-FPM
Java编译时如何设置编码格式
Ja va编译时如何设置编码格式 在Ja va开发中,编码问题就像个“隐形刺客”,稍不注意就会导致编译失败或乱码。其实,解决它的核心钥匙之一,就是在编译时正确指定编码格式。具体怎么做呢?我们分场景来看。 1 命令行编译 如果你习惯使用命令行工具,方法非常直接。使用ja vac命令时,加上-enco
Atom如何配置Scala环境?Atom搭建Scala开发环境指南
Atom 不适合做 Scala 主力编辑器,因其插件已停更、无法对接 Metals Bloop,导致类型推导失败、跳转失效、不支持 Scala 3 等问题;推荐使用 VS Code + Metals 或 IntelliJ IDEA。 直白点说,想直接在 Atom 里配置出能顺畅编译和智能感知的 Sc
Ubuntu Java编译时出现错误码怎么办
Ubuntu Ja va编译错误码排查与解决 一 快速定位与通用步骤 遇到编译错误先别慌,按照下面这个通用流程走一遍,很多问题其实都能迎刃而解。这就像医生看病,得先做一套标准检查。 确认已安装JDK并可用:这是最基础的一步。打开终端,分别运行 ja va -version 与 ja vac -ver
怎么在 Java 中使用 CyclicBarrier 实现多线程的阶段性同步
怎么在 Ja va 中使用 CyclicBarrier 实现多线程的阶段性同步 什么时候该用 CyclicBarrier 而不是 CountDownLatch 在并发编程中,选择正确的同步工具往往事半功倍。那么,CyclicBarrier 和 CountDownLatch 到底该怎么选?核心区别在于
- 日榜
- 周榜
- 月榜
1
2
3
4
5
6
7
8
9
10
相关攻略
2015-03-10 11:25
2015-03-10 11:05
2021-08-04 13:30
2015-03-10 11:22
2015-03-10 12:39
2022-05-16 18:57
2025-05-23 13:43
2025-05-23 14:01
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程
热门话题

