GORM访问mysql数据库之建表
创建go项目
GOPROXY=https://goproxy.cn,direct
go代码
package main
import (
"fmt"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"log"
"os"
"time"
)
import "gorm.io/driver/mysql"
type Product struct {
gorm.Model // 定义了一些公用字段
Code string
Price 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成功!")
}
}