admin icon indicating copy to clipboard operation
admin copied to clipboard

多种数据库的支持基于beegoORM的

Open tossp opened this issue 12 years ago • 1 comments

//数据库连接
    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没测过。。。。

tossp avatar Dec 06 '13 02:12 tossp

好样的!谢谢了

osgochina avatar Dec 06 '13 02:12 osgochina