首页主机资讯Go语言在Linux下的数据库操作指南

Go语言在Linux下的数据库操作指南

时间2026-01-22 01:19:03发布访客分类主机资讯浏览1228
导读: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”))
  • 连接池建议:在高并发场景下显式设置 MaxOpenConns / MaxIdleConns / ConnMaxLifetime,提升吞吐与稳定性。

五 运行与排错建议

  • 运行与配置:
    • 运行程序:在项目目录执行 go run main.go
    • 安全建议:将 用户名、密码、主机、端口、库名 等敏感信息放入 环境变量或配置文件,避免硬编码。
  • 常见排错要点:
    • 连接失败:核对 DSN、主机可达性、端口、用户权限;
    • SQL 语法错误:在数据库客户端先验证 SQL;
    • 性能问题:检查慢查询、索引缺失,结合连接池与语句优化。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Go语言在Linux下的数据库操作指南
本文地址: https://pptw.com/jishu/789349.html
Linux系统中Go语言的日志管理方法 在Linux上使用Go语言进行Web开发

游客 回复需填写必要信息