Golang初始化MySQL数据
安装依赖
主要这边还需要安装两个依赖,gorm 、viper ,具体的可以访问他们的官网(Gorm官网地址 Viper Github地址)
初始化配置 在根目录下打开终端执行:
go mod init 项目名称 (例如: go mod init demo )
安装依赖
go get github.com/jinzhu/gorm 或 go get -u gorm.io/gorm go get -u gorm.io/driver/mysql
go get github.com/spf13/viper
创建文件
创建一个yml文件(application.yml )
datasource:
driverName: mysql
host:
port:
database:
username:
password:
charset: utf8
在目录下创建一个common包,包下再创建一个database.go文件,内部写一个初始化数据库,建议拆分出来,这样拼接的方式有利于项目在不同环境下进行快速的更改配置。
package common
import (
"fmt"
"github.com/jinzhu/gorm"
"github.com/spf13/viper"
)
var DB *gorm.DB
func InitDB() *gorm.DB {
driverName := viper.GetString("datasource.driverName")
host := viper.GetString("datasource.host")
port := viper.GetString("datasource.port")
database := viper.GetString("datasource.database")
username := viper.GetString("datasource.username")
password := viper.GetString("datasource.password")
charset := viper.GetString("datasource.charset")
args := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=%s&parseTime=true",
username,
password,
host,
port,
database,
charset)
db, err := gorm.Open(driverName, args)
if err != nil {
fmt.Println("fail err mysql", err.Error())
}
db.AutoMigrate(User{})
DB = db
return db
}
func GetDB() *gorm.DB {
return DB
}
main函数执行
在根目录下创建一个main文件(唯一) ,在这个环境我们需要做做一个初始化配置文件的操作,在main中优先加载这个config,然后才是初始化数据库,顺序不能错哈,因为数据库的连接信息在yml文件中,所以不要将顺序搞错。
package main
import (
"github.com/gin-gonic/gin"
_ "github.com/go-sql-driver/mysql"
"github.com/spf13/viper"
"go-gin-vue/common"
"os"
)
func main() {
InitConfig()
db := common.InitDB()
defer db.Close()
r := gin.Default()
r = CollectRouter(r)
if port != "" {
panic(r.Run(":" + port))
}
r.Run(":9000")
}
func InitConfig() {
workDir, _ := os.Getwd()
viper.SetConfigName("application")
viper.SetConfigType("yml")
viper.AddConfigPath(workDir + "/config")
err := viper.ReadInConfig()
if err != nil {
panic("")
}
}
|