![](/static/assets/images/common/logo/logo_t-acg.png)
example
|─ config
| └─ app.ini
|─ core
| └─ core_mysql.go
└─ main.go
app.ini是被定义的配置文件
[mysql]
host = localhost
port = 3306
user = root
password = root
database = test
core_mysql.go封装了连接MySQL并返回全局可操作的核心变量。
package core
import (
"log"
"os"
"time"
"gorm.io/gorm/logger"
"gopkg.in/ini.v1"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
var DBMySQL *gorm.DB //设置全局变量,方便其他文件调用
func ConnDBMySQL() {
cfg, _ := ini.Load("./config/app.ini")
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: true, // 彩色打印
},
)
type Database struct {
url string
port string
user string
passwd string
database string
}
database := Database{
host: cfg.Section("mysql").Key("host").String(),
port: cfg.Section("mysql").Key("port").String(),
user: cfg.Section("mysql").Key("user").String(),
passwd: cfg.Section("mysql").Key("password").String(),
database: cfg.Section("mysql").Key("database").String(),
}
var err error
// 最终连接情况=> dsn := "root:root@tcp(localhost:3306)/test?charset=utf8mb4&parseTime=True&loc=Local"
dsn := database.user + ":" + database.passwd + "@tcp(" + database.host + ":" + database.port + ")/" + database.database + "?charset=utf8mb4&parseTime=True&loc=Local"
DBMySQL, err = gorm.Open(mysql.Open(dsn), &gorm.Config{
PrepareStmt: true,
QueryFields: true,
Logger: newLogger,
Debug: true, // 启用调试模式
})
if err != nil {
log.Println("connect string is =>", dsn)
log.Fatal(err)
log.Println("🐒 the MySQL was failed to connect ×!")
} else {
log.Println("🐬 the MySQL was connected successfully √!")
}
}
主文件
上述步骤都做好后,运行项目的时候直接go run main.go
即可
package main
import (
"fmt"
"models"
)
func main() {
core.ConnDBMySQL()
// 在这里添加你想要执行的其他操作
// 例如,你可以进行数据库查询、更新、插入等操作
// 或者使用连接到的数据库进行其他业务逻辑
fmt.Println("Connected to MySQL and ready to perform operations...")
}
这里我是在E盘目录下运行的,具体目录根据你电脑文件所在路径而定。
PS E:> go run ./main.go
2024/05/22 12:25:56 🐬 the MySQL was connected successfully √!
Connected to MySQL and ready to perform operations...