beego mysql 连接池_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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值