配置文件:
[spu] user_name = xxx password = xxx host = 192.168.1.xxx database = liexin_spu table_prefix =xxx type = mysql #线上地址 #user:passwd@ip:port/databases [supp] user_name = xxx password = xxx host = xxx database = xxx table_prefix =lie_ type = mysql [cms] user_name = xxx password = xxx host = xxx database = xxx table_prefix = type = mysql
配置多个mysql数据库
package config type BaseDatabase struct { UserName string Password string Host string Database string MaxIdleCons int MaxOpenCons int Prefix string } //多数据库配置 func BuildDatabaseList() (DatabaseList map[string]BaseDatabase) { return map[string]BaseDatabase{ "spu": { UserName: Get("spu.user_name").String(), Password: Get("spu.password").String(), Host: Get("spu.host").String(), Database: Get("spu.database").String(), Prefix: Get("spu.table_prefix").String(), }, "supp": { UserName: Get("supp.user_name").String(), Password: Get("supp.password").String(), Host: Get("supp.host").String(), Database: Get("supp.database").String(), Prefix: Get("supp.table_prefix").String(), }, "cms": { UserName: Get("cms.user_name").String(), Password: Get("cms.password").String(), Host: Get("cms.host").String(), Database: Get("cms.database").String(), Prefix: Get("cms.table_prefix").String(), }, } }
实现mysql连接池
package mysql import ( "fmt" _ "github.com/go-sql-driver/mysql" "github.com/go-xorm/xorm" "search_server/pkg/config" "search_server/pkg/e" ) var DatabaseConMap map[string]*xorm.Engine func Setup() error { DatabaseConMap = make(map[string]*xorm.Engine, 0) DatabaseList := config.BuildDatabaseList() var err error //循环生成数据库链接 for conName, db := range DatabaseList { userName := db.UserName password := db.Password host := db.Host database := db.Database dataSourceName := fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8", userName, password, host, database) DatabaseConMap[conName], err = xorm.NewEngine("mysql", dataSourceName) if err != nil { return e.NewFatalError(err.Error()) //这里返回致命异常 } //日志打印SQL DatabaseConMap[conName].ShowSQL(true) //设置连接池的空闲数大小 DatabaseConMap[conName].SetMaxIdleConns(db.MaxIdleCons) //设置最大打开连接数 DatabaseConMap[conName].SetMaxOpenConns(db.MaxOpenCons) } return nil } func Conn(conName string) *xorm.Engine { return DatabaseConMap[conName] }
本文来自博客园,作者:孙龙-程序员,转载请注明原文链接:https://www.cnblogs.com/sunlong88/p/13389730.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
2019-07-28 httpserver支持路由传输控制器
2019-07-28 httpserver实现简单的上下文