golang beego框架orm使用连接池记录
作者:互联网
beego的orm默认是设置不了超时时间的
package models
import (
"errors"
"fmt"
"github.com/astaxie/beego"
"github.com/astaxie/beego/orm"
"net/url"
"os"
"reflect"
"strings"
//"database/sql"
_ "github.com/go-sql-driver/mysql"
)
func init() {
//如果存在app.conf文件,则表示程序已安装,执行数据库初始化
Init()
}
//初始化数据库注册
func Init() {
//初始化数据库
RegisterDB()
runmode := beego.AppConfig.String("runmode")
if runmode == "prod" {
orm.Debug = false
orm.RunSyncdb("default", false, false)
} else {
orm.Debug = true
orm.RunSyncdb("default", false, true)
}
}
//注册数据库
func RegisterDB() {
orm.RegisterDriver("mysql", orm.DRMySQL)
models := []interface{}{//如果使用高级查询必须注册模型
NewUser(),
NewUserInfo(),
}
orm.RegisterModelWithPrefix(beego.AppConfig.DefaultString("prefix", "bee_"), models...)
dbUser := beego.AppConfig.String("user")
dbPassword := beego.AppConfig.String("password")
if envpass := os.Getenv("MYSQL_PASSWORD"); envpass != "" { //获取环境变量中的数据库密码
dbPassword = envpass
}
dbDatabase := beego.AppConfig.String("database")
if envdatabase := os.Getenv("MYSQL_DATABASE"); envdatabase != "" {//获取环境变量中的数据库库名
dbDatabase = envdatabase
}
dbCharset := beego.AppConfig.String("charset")
dbHost := beego.AppConfig.String("host")
if envhost := os.Getenv("MYSQL_HOST"); envhost != "" { //获取环境变量中的数据库链接地址
dbHost = envhost
}
dbPort := beego.AppConfig.String("port")
if envport := os.Getenv("MYSQL_PORT"); envport != "" { //获取环境变量中的数据库链接端口
dbPort = envport
}
loc := "Local"
if timezone := beego.AppConfig.String("timezone"); timezone != "" {
loc = url.QueryEscape(timezone)
}
dbLink := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=%s&loc=%v", dbUser, dbPassword, dbHost, dbPort, dbDatabase, dbCharset, loc)
maxIdle := beego.AppConfig.DefaultInt("maxIdle", 50) //连接池空闲
maxConn := beego.AppConfig.DefaultInt("maxConn", 300) //连接池最大连接数 数据库默认链接数一般为512
if err := orm.RegisterDataBase("default", "mysql", dbLink, maxIdle, maxConn); err != nil {
panic(err)
}
db,_ := orm.GetDB("default")//获取数据库
//设置连接池超时时间 mysql默认超时时间为28800秒也就是八个小时
db.SetConnMaxLifetime(14400)
}
//获取带表前缀的数据表
//@param table 数据表
func getTable(table string) string {
prefix := beego.AppConfig.DefaultString("prefix", "bee_")
if !strings.HasPrefix(table, prefix) {
table = prefix + table
}
return table
}
标签:beego,String,AppConfig,golang,orm,table,数据库 来源: https://blog.csdn.net/weixin_39998006/article/details/96879500