gorm是一个GoLand写的,开发人员友好的ORM库。 GORM支持多种数据库连接,目前官方支持库有:MySQL,PostgreSQL、SQLite、SQLServer
数据库连接
连接MySQL数据库,需要引入 gorm 和mysql两个包:
import ( "gorm.io/driver/mysql" "gorm.io/gorm" )
同时连接mysql需要使用tcp套接字符串来连接,因此需要先构建套接字符串:
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{})
需要再设置一下给连接对象设置空闲时的最大连接数、设置与数据库的最大打开连接数,每一个连接的生命周期等信息
sqlDB, err := db.DB() if err != nil { return err } sqlDB.SetMaxIdleConns(1000) sqlDB.SetMaxOpenConns(100000) sqlDB.SetConnMaxLifetime(-1)
自动迁移表
gorm还有一个强大的功能,就是自动迁移表功能 func InitDB(setting *mysqlConfig) error { var db *gorm.DB var err error url := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local", setting.User, setting.Password, setting.Host, setting.Port, setting.Database) setting.Url = url db, err = gorm.Open(mysql.Open(url), &gorm.Config{}) if err != nil { return err }
sqlDB, err := db.DB()
if err != nil {
return err
}
sqlDB.SetMaxIdleConns(1000)
sqlDB.SetMaxOpenConns(100000)
sqlDB.SetConnMaxLifetime(-1)
db.AutoMigrate(&model.Admin{}, &model.Article{}, &model.ArticleData{}, &model.Attachment{}, &model.Category{})
DB = db
return nil
}
写入数据
category.go admin.go article.go attachment.go