mysql:
dsn: "root:123456@tcp(172.17.0.1:3306)/articles?charset=utf8mb4&parseTime=True&loc=Local"
max_open: 100
max_idle: 10
life_time: "+3s"
log: true
redis:
addr: "172.18.0.1:2379"
引入包
_ "github.com/jinzhu/gorm/dialects/mysql"
"github.com/jinzhu/gorm"
"gopkg.in/yaml.v2"
定义结构体
type Config struct {
Mysql struct {
Dsn string `yaml:"dsn"`
MaxOpen int `yaml:"max_open"`
MaxIdle int `yaml:"max_idle"`
LifeTime string `yaml:"life_time"`
Log bool `yaml:"log"`
}
}
使用
func Mysql() *gorm.DB {
dbConfig := Config{}
data, err := ioutil.ReadFile("./config/config.yml")
if err != nil {
panic(err)
}
err = yaml.Unmarshal([]byte(data), &dbConfig)
if err != nil {
panic(err)
}
db, err := gorm.Open("mysql", dbConfig.Mysql.Dsn)
if err != nil {
panic(err)
}
lifeTime, _ := time.ParseDuration(dbConfig.Mysql.LifeTime)
db.DB().SetConnMaxLifetime(lifeTime)
db.DB().SetMaxOpenConns(dbConfig.Mysql.MaxOpen)
db.DB().SetMaxIdleConns(dbConfig.Mysql.MaxIdle)
if dbConfig.Mysql.Log {
db.LogMode(true)
}
return db
}