package models import ( "wechat-conf/utils" "github.com/astaxie/beego/config" _ "github.com/go-sql-driver/mysql" "github.com/go-xorm/xorm" ) var ( DBEngine *xorm.Engine ) func InitDB() { DBEngine = NewDBEngine() } // NewDBEngine 初始化数据库连接 func NewDBEngine() *xorm.Engine { dbType := "mysql" dns := getMySQLDNS() engine, err := xorm.NewEngine(dbType, dns) engine.ShowSQL() if err != nil { panic(err) } return engine } func getMySQLDNS() (dns string) { appRoot := utils.GetAppRoot() dbconf, _ := config.NewConfig("ini", appRoot+"/conf/db.conf") conProt := dbconf.DefaultString("con_protocol", "tcp") dbAddr := dbconf.DefaultString("db_addr", "localhost") dbPort := dbconf.DefaultString("db_port", "3306") userName := dbconf.DefaultString("username", "root") password := dbconf.String("password") database := dbconf.String("database") charSet := dbconf.DefaultString("char_set", "utf8") dns = userName if len(password) > 0 { dns += ":" + password } dns += "@" + conProt + "(" + dbAddr + ":" + dbPort + ")" + "/" + database + "?charset=" + charSet return }