admin
admin copied to clipboard
多种数据库的支持基于beegoORM的
//数据库连接
dbtype := beego.AppConfig.String("dbtype")
dbname := beego.AppConfig.String("dbname")
dbhost := beego.AppConfig.String("dbhost")
dbuser := beego.AppConfig.String("dbuser")
dbpass := beego.AppConfig.String("dbpass")
dbsslmode := beego.AppConfig.String("dbsslmode")
dbprot := beego.AppConfig.String("dbprot")
var dataSource string
switch dbtype {
case "postgres":
orm.RegisterDriver("postgres", orm.DR_Postgres)
dataSource = fmt.Sprintf("dbname=%s host=%s user=%s password=%s port=%s sslmode=%s", dbname, dbhost, dbuser, dbpass, dbprot, dbsslmode)
orm.RegisterDataBase("default", dbtype, dataSource, 30)
case "mysql":
orm.RegisterDriver("mysql", orm.DR_MySQL)
//TODO mysql连接字段
dataSource = fmt.Sprintf("%s:%s@%s:%s/%s?charset=utf8", dbuser, dbpass, dbhost, dbprot, dbname)
orm.RegisterDataBase("default", dbtype, dataSource, 10)
default:
beego.Critical("Database driver is not allowed:", dbtype)
}
beego.Trace("DB ", dbtype, dbhost)
os.Mkdir(path.Join(beego.AppPath, "tmp"), os.ModePerm)
var (
force_drop_table, verbose bool
)
if beego.AppConfig.String("runmode") == "pro" {
beego.Info("Product mode enabled")
orm.Debug = false
force_drop_table = false
verbose = false
beego.SetLevel(beego.LevelInfo)
} else {
force_drop_table = false
verbose = true
orm.Debug = true
beego.SetLevel(beego.LevelTrace)
}
err := orm.RunSyncdb("default", force_drop_table, verbose)
if err != nil {
beego.Critical(err)
} else {
models.DBinit()
}
话说我一直用pgsql,mysql没测过。。。。
好样的!谢谢了