发布于2026-07-10 阅读(0)
扫一扫,手机访问
在日常的Go开发中,数据库操作是家常便饭。特别是在Linux环境下,一套流畅的数据库操作流程能大幅提升开发效率。今天咱们就来盘一盘,在Golang里如何通过第三方库搞定数据库操作,从驱动安装到增删改查,一步步走通。

先搞定驱动安装。不同的数据库需要对应的Go驱动,比如操作MySQL就用go-sql-driver/mysql。安装命令很简单,一行搞定:
go get -u github.com/go-sql-driver/mysql驱动装好之后,在代码里导入包。需要留意的是,这里用了一个下划线_来占位导入驱动包——这么做的原因是让驱动在init()函数中完成自我注册,同时避免Go编译器报“未使用”的错误。标准写法如下:
import ("database/sql"_ "github.com/go-sql-driver/mysql")接下来就是核心的数据库连接环节。使用sql.Open()函数,传入驱动名称和数据源名称(DSN)。以MySQL为例,DSN的格式是username:password@tcp(host:port)/dbname:
func main() {db, err := sql.Open("mysql", "username:password@tcp(localhost:3306)/dbname")if err != nil {log.Fatal(err)}defer db.Close()// 进行数据库操作...}连接建立之后,就可以动手执行SQL了。插入数据时,一般先用db.Prepare()预编译语句,再用stmt.Exec()执行。这样做既能防止SQL注入,执行效率也更高:
func insertData(db *sql.DB) {query := "INSERT INTO users (name, age) VALUES (?, ?)"stmt, err := db.Prepare(query)if err != nil {log.Fatal(err)}defer stmt.Close()result, err := stmt.Exec("John Doe", 30)if err != nil {log.Fatal(err)}lastInsertId, err := result.LastInsertId()if err != nil {log.Fatal(err)}fmt.Println("Inserted row with ID:", lastInsertId)}查询操作则使用db.Query(),返回的Rows对象需要遍历读取。以查询所有用户为例:
func getAllUsers(db *sql.DB) {query := "SELECT id, name, age FROM users"rows, err := db.Query(query)if err != nil {log.Fatal(err)}defer rows.Close()for rows.Next() {var id intvar name stringvar age interr := rows.Scan(&id, &name, &age)if err != nil {log.Fatal(err)}fmt.Printf("User: %d, %s, %d\n", id, name, age)}err = rows.Err()if err != nil {log.Fatal(err)}}最后别忘了关闭数据库连接。defer db.Close()通常放在连接成功后立即执行,这是一个好习惯,确保函数退出时连接被安全释放。
以上就是在Golang中通过Linux环境操作数据库的标准流程。根据你实际使用的数据库类型(PostgreSQL、SQLite等),更换对应的驱动和DSN格式即可,整体套路万变不离其宗。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8