GORM访问mysql数据库之建表
GORM访问mysql数据库之建表
创建go项目
GOPROXY=https://goproxy.cn,direct
go代码
package mainimport ("fmt""gorm.io/gorm""gorm.io/gorm/logger""log""os""time"
)
import "gorm.io/driver/mysql"type Product struct {gorm.Model // 定义了一些公用字段Code stringPrice uint
}func main() {//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{})dsn := "user:pass@tcp(127.0.0.1:3306)/gotest?charset=utf8mb4&parseTime=True&loc=Local"// 设置全局的logger,这个logger在我们执行每个sql语句的时候会打印每一行sql// sql才是最重要的,本着这个原则我们尽量是每个api背后的sql语句是什么newLogger := logger.New(log.New(os.Stdout, "\\r\\n", log.LstdFlags), // io.writer//logger.Config{// SlowThreshold: time.Second, // 慢SQL阈值// LogLevel: logger.Silent, // Log level// Colorful: false, // 禁用彩色打印//},logger.Config{SlowThreshold: time.Second, // 慢SQL阈值LogLevel: logger.Info, // Log level info打印所有Colorful: true, // 禁用彩色打印},)db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{Logger: newLogger,})if err != nil {panic(err)} else {fmt.Println("数据库链接成功!")}// 定义一个表结构,将表结构直接生成对于的表 - migrations,其本质就是定义一个struct// 1. 迁移 schema// &Product{}实例化,不需要数据,只要结构err = db.AutoMigrate(&Product{}) // 如果日志打开if err != nil {panic(err)} else {fmt.Println("数据库表迁移 schema成功!")}
}