models.go 1.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package models
  2. import (
  3. "wechat-conf/utils"
  4. "github.com/astaxie/beego/config"
  5. _ "github.com/go-sql-driver/mysql"
  6. "github.com/go-xorm/xorm"
  7. )
  8. var (
  9. DBEngine *xorm.Engine
  10. )
  11. func InitDB() {
  12. DBEngine = NewDBEngine()
  13. }
  14. // NewDBEngine 初始化数据库连接
  15. func NewDBEngine() *xorm.Engine {
  16. dbType := "mysql"
  17. dns := getMySQLDNS()
  18. engine, err := xorm.NewEngine(dbType, dns)
  19. // engine.ShowSQL()
  20. if err != nil {
  21. panic(err)
  22. }
  23. return engine
  24. }
  25. func getMySQLDNS() (dns string) {
  26. appRoot := utils.GetAppRoot()
  27. dbconf, _ := config.NewConfig("ini", appRoot+"/conf/db.conf")
  28. conProt := dbconf.DefaultString("con_protocol", "tcp")
  29. dbAddr := dbconf.DefaultString("db_addr", "localhost")
  30. dbPort := dbconf.DefaultString("db_port", "3306")
  31. userName := dbconf.DefaultString("username", "root")
  32. password := dbconf.String("password")
  33. database := dbconf.String("database")
  34. charSet := dbconf.DefaultString("char_set", "utf8")
  35. dns = userName
  36. if len(password) > 0 {
  37. dns += ":" + password
  38. }
  39. dns += "@" + conProt + "(" + dbAddr + ":" + dbPort + ")" + "/" + database + "?charset=" + charSet
  40. return
  41. }