Gin 协程mysql客户端

一、Gin框架 mysql配置

这里选择yaml文件配置

二、配置读取 viper

读取yaml文件中对应配置

三、mysql 的协程客户端

文件位置

Go 复制代码
package database

import (
	"database/sql"
	"fmt"
	"github.com/spf13/viper"
	"log"
	"net/http"
	"sync"

	"github.com/gin-gonic/gin"
	_ "github.com/go-sql-driver/mysql"
)

var Db *sql.DB
var once sync.Once

func initDB() {
	var err error

	DBUser := viper.GetString("database.username")
	DBPwd := viper.GetString("database.password")
	DBHost := viper.GetString("database.host")
	DBPort := viper.GetString("database.port")
	DBName := viper.GetString("database.name")

	//"username:password@tcp(127.0.0.1:3306)/dbname"
	dsn := DBUser + ":" + DBPwd + "@tcp(" + DBHost + ":" + DBPort + ")/" + DBName
	Db, err = sql.Open("mysql", dsn)
	if err != nil {
		log.Fatal(err)
	}
	// 设置连接池参数(可选)
	Db.SetMaxOpenConns(10)
	Db.SetMaxIdleConns(5)
	// 验证连接是否有效
	if err = Db.Ping(); err != nil {
		log.Fatal(err)
	}
}

func queryDB(wg *sync.WaitGroup, id int) {
	defer wg.Done()
	var name string
	err := Db.QueryRow("SELECT name FROM crm_user WHERE id=?", id).Scan(&name)
	if err != nil {
		log.Printf("Error querying database for id %d: %v", id, err)
		return
	}
	fmt.Printf("Queried name for id %d: %s\n", id, name)
}

这样就完成了,访问情况如下

相关推荐
codists10 分钟前
《使用Gin框架构建分布式应用》阅读笔记:p212-p233
笔记·golang·gin·编程人·codists·gin框架
knoci4 小时前
【Go】-基于Gin框架的博客项目
后端·学习·golang·gin
codists1 天前
《使用Gin框架构建分布式应用》阅读笔记:p251-p271
golang·gin·编程人
科技百宝箱4 天前
gin入门教程(9):路由分组与路由版本控制
开发语言·golang·go·gin·1024程序员节
龙门吹雪4 天前
go 语言 Gin Web 框架的实现原理探究
开发语言·golang·gin·gin.context·gin框架·gin.engine
科技百宝箱4 天前
gin入门教程(10):实现jwt认证
开发语言·中间件·golang·go·gin·1024程序员节
科技百宝箱5 天前
gin入门教程(7): 使用 Logrus + Lumberjack 创建日志中间件
开发语言·http·中间件·golang·gin
科技百宝箱5 天前
gin入门教程(2):go安装以及初始目录构建
开发语言·golang·gin
科技百宝箱5 天前
gin入门教程(6):全局中间件,自定义中间件
中间件·golang·go·gin
白总Server6 天前
孤岛架构在安全性方面
网络·数据库·vue.js·架构·负载均衡·gin·1024程序员节