发布于2026-07-16 阅读(0)
扫一扫,手机访问
在Ubuntu环境下用Go语言连接数据库,这事儿说简单也简单,但不少新手容易在驱动选择和连接参数上卡壳。下面就把完整流程和关键细节拆开来讲,省得大家走弯路。

整体来看,步骤其实很清晰:先安装对应数据库的Go驱动,然后在代码里导入驱动包、配置连接信息(地址、端口、用户名、密码等),接着建立连接、执行SQL,最后别忘了关闭连接。每一步都有讲究,咱们以最常见的MySQL为例,一步步说清楚。
Go语言本身不提供数据库驱动,需要第三方实现。对于MySQL,社区最常用的是go-sql-driver/mysql。直接执行以下命令即可安装:
go get -u github.com/go-sql-driver/mysql
这条命令会把驱动下载到你的Go模块缓存里,之后在代码中导入就能用。如果你用的是PostgreSQL或SQLite,对应驱动分别是lib/pq和mattn/go-sqlite3,操作逻辑类似。
下面是一个完整的示例,从导入包到执行查询,每一步都标清楚了:
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
// 配置数据库连接信息
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()
// 检查数据库连接是否成功
err = db.Ping()
if err != nil {
panic(err)
}
fmt.Println("Connected to the database!")
// 执行SQL语句
var name string
err = db.QueryRow("SELECT name FROM users WHERE id = ?", 1).Scan(&name)
if err != nil {
panic(err)
}
fmt.Printf("User with ID 1: %s\n", name)
}
注意几个关键点:
parseTime=True,否则时间类型字段会解析成字符串;charset=utf8mb4支持emoji等特殊字符。username、password、localhost、3306和dbname需要替换成你自己的数据库信息。sql.Open只是初始化连接池,并不会真正建立连接;真正的连接是在第一次查询(比如Ping或QueryRow)时才建立的。defer db.Close()确保程序退出前释放资源。将上述代码保存为main.go,然后在终端执行:
go run main.go
如果一切正常,你会看到输出:Connected to the database! 以及查询到的用户名。
至于其他数据库(PostgreSQL、SQLite等),流程完全一致:安装对应的驱动包,修改导入路径和DSN格式即可。例如PostgreSQL的驱动是github.com/lib/pq,DSN格式为host=localhost port=5432 user=username password=password dbname=dbname sslmode=disable。SQLite则不需要网络连接,DSN直接是文件路径。
说到底,Go连接数据库的核心就两点:选对驱动、写对DSN。只要这两步不出错,后面的操作就和操作database/sql标准接口一样丝滑了。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8