数据库概述 #

一、数据库选择 #

1.1 常用数据库 #

数据库 类型 适用场景
PostgreSQL 关系型 复杂业务
MySQL 关系型 Web应用
MongoDB 文档型 灵活数据
Redis 缓存 高性能缓存

1.2 ORM选择 #

ORM 说明
GORM 功能强大的ORM
sqlx 轻量级SQL扩展
ent Facebook ORM
mongo-driver MongoDB官方驱动

二、GORM集成 #

2.1 安装 #

bash
go get -u gorm.io/gorm
go get -u gorm.io/driver/postgres
go get -u gorm.io/driver/mysql

2.2 PostgreSQL连接 #

go
package database

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

func ConnectPostgres(dsn string) (*gorm.DB, error) {
    return gorm.Open(postgres.Open(dsn), &gorm.Config{})
}

// 使用
dsn := "host=localhost user=postgres password=secret dbname=myapp port=5432"
db, err := ConnectPostgres(dsn)

2.3 MySQL连接 #

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

func ConnectMySQL(dsn string) (*gorm.DB, error) {
    return gorm.Open(mysql.Open(dsn), &gorm.Config{})
}

// 使用
dsn := "user:password@tcp(localhost:3306)/myapp?charset=utf8mb4&parseTime=True"
db, err := ConnectMySQL(dsn)

三、Redis集成 #

3.1 安装 #

bash
go get github.com/redis/go-redis/v9

3.2 连接Redis #

go
package database

import (
    "github.com/redis/go-redis/v9"
)

func ConnectRedis(addr string) *redis.Client {
    return redis.NewClient(&redis.Options{
        Addr:     addr,
        Password: "",
        DB:       0,
    })
}

// 使用
rdb := ConnectRedis("localhost:6379")

四、MongoDB集成 #

4.1 安装 #

bash
go get go.mongodb.org/mongo-driver/mongo

4.2 连接MongoDB #

go
package database

import (
    "context"
    "go.mongodb.org/mongo-driver/mongo"
    "go.mongodb.org/mongo-driver/mongo/options"
)

func ConnectMongo(uri string) (*mongo.Client, error) {
    return mongo.Connect(context.Background(), options.Client().ApplyURI(uri))
}

// 使用
client, err := ConnectMongo("mongodb://localhost:27017")

五、数据库配置 #

5.1 配置结构 #

go
type DatabaseConfig struct {
    Host     string
    Port     int
    User     string
    Password string
    DBName   string
    SSLMode  string
}

func Connect(cfg DatabaseConfig) (*gorm.DB, error) {
    dsn := fmt.Sprintf(
        "host=%s port=%d user=%s password=%s dbname=%s sslmode=%s",
        cfg.Host, cfg.Port, cfg.User, cfg.Password, cfg.DBName, cfg.SSLMode,
    )
    
    return gorm.Open(postgres.Open(dsn), &gorm.Config{})
}

六、总结 #

6.1 数据库选择建议 #

场景 推荐
复杂业务 PostgreSQL + GORM
简单Web应用 MySQL + GORM
灵活数据 MongoDB
高性能缓存 Redis

6.2 下一步 #

现在你已经了解了数据库概述,接下来让我们学习 GORM集成,深入了解GORM的使用!

最后更新:2026-03-28