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)
}

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

相关推荐
皓月盈江3 天前
GO使用Gin框架实现模板定义、解析与渲染
linux·golang·go·gin·定义模板·解析模板·渲染模板
码剑客4 天前
Gin+GORM+Redis 项目开发常见性能坑汇总(Go后端避坑指南)
redis·后端·golang·gin
qq_4523962310 天前
第四篇:《索引原理与实战:B-tree、Hash、GIN、GiST、BRIN》
算法·哈希算法·gin
ly768922 天前
PostgreSQL JSONB 在 Spring Boot 中的读写边界:从 JDBC 类型映射到 GIN 索引失效
spring boot·postgresql·gin·jsonb·pgjdbc·gin 索引
谢亮_vipxieliang1 个月前
Go Gin 中间件与参数验证:从入门到实战
中间件·golang·gin
墨鱼老师1 个月前
Go+Gin+Vue 毕设项目:Gin 框架搭建后端基础接口实战
vue.js·golang·go·gin·前后端分离·计算机毕业设计·go 后端
ttwuai1 个月前
Golang Web后台管理框架推荐:Gin、GoFrame与数据面板项目怎么分
前端·golang·gin
EatFan1 个月前
Go语言全栈实战:基于 Gin + Vue + JWT + RBAC 从零搭建前后端分离权限管理系统
vue.js·golang·go·vue·gin·jwt·rbac
数据库百宝箱1 个月前
rum&gin索引对比
java·数据库·gin
ttwuai2 个月前
Go开源后台管理系统推荐:怎么按技术栈和边界比较4个官方仓库?
golang·gin