全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-21 6 分钟 ✍️ juanwangdev

数据库连接与配置

GORM 通过 gorm.Open 统一接口连接各类数据库,下面梳理标准用法。

连接数据库

gorm.Open 接收数据库驱动实例和可选配置项,返回 *gorm.DB 实例。

MySQL 连接

Go
import (
    "gorm.io/gorm"
    "gorm.io/driver/mysql"
)

dsn := "user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
    panic("连接失败: " + err.Error())
}

PostgreSQL 连接

Go
import (
    "gorm.io/gorm"
    "gorm.io/driver/postgres"
)

dsn := "host=localhost user=postgres password=postgres dbname=mydb port=5432 sslmode=disable TimeZone=Asia/Shanghai"
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})

SQLite 连接

Go
import (
    "gorm.io/gorm"
    "gorm.io/driver/sqlite"
)

db, err := gorm.Open(sqlite.Open("mydb.sqlite"), &gorm.Config{})

连接池配置

通过 sql.DB 底层对象配置连接池参数:

Go
sqlDB, err := db.DB()
if err != nil {
    panic(err)
}

// 设置最大空闲连接数
sqlDB.SetMaxIdleConns(10)

// 设置最大打开连接数
sqlDB.SetMaxOpenConns(100)

// 设置连接最大存活时间
sqlDB.SetConnMaxLifetime(time.Hour)

不配置连接池时,默认使用 Go database/sql 的默认值,生产环境建议显式设置。

通用配置

gorm.Config 支持常用配置项:

Go
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
    // 禁用嵌套事务
    DisableNestedTransaction: false,
    // 准备语句模式(预编译)
    PrepareStmt: true,
    // 查询时自动转义表名和列名
    NamingStrategy: schema.NamingStrategy{
        TablePrefix:   "t_",
        SingularTable: true,
    },
})

DSN 中的 parseTime=True 在 MySQL 中是必须的,否则 time.Time 字段会解析失败。

要点总结

  • gorm.Open 是统一连接入口,接收驱动实例和配置
  • 不同数据库使用对应驱动的 Open(dsn) 方法
  • 连接池通过 db.DB() 获取 sql.DB 后配置
  • MySQL DSN 必须包含 parseTime=True 以支持时间类型
  • 生产环境建议显式配置连接池与命名策略

存放路径:D:\git2\jwdev\articles\GORM\入门\GORM 基础概念\数据库连接与配置.md

📝 发现内容有误?点击此处直接编辑

← 上一篇 GORM 简介与安装
下一篇 → 模型定义基础
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库