This is an explanation of the video content.
 用技术延续对ACG的热爱
36
 | 
Go读取ini文件后连接MySQL

文件目录

example
|─ config
|	└─ app.ini
|─ core
|	└─ core_mysql.go
└─ main.go

app.ini

app.ini是被定义的配置文件

[mysql]
host      = localhost
port     = 3306
user     = root
password   = root
database = test

core_mysql.go

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 √!")
	}
}

main.go

主文件 上述步骤都做好后,运行项目的时候直接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...


36 服务端 ↦ Go开发技巧 __ 259 字
 Go开发技巧 #25