mysql.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package database
  2. import (
  3. "bytes"
  4. "duoduo/conf"
  5. "fmt"
  6. _ "github.com/go-sql-driver/mysql" //加载mysql
  7. "github.com/jinzhu/gorm"
  8. "log"
  9. "strconv"
  10. )
  11. var Eloquent *gorm.DB
  12. var (
  13. Host string
  14. Port int
  15. Name string
  16. Username string
  17. Password string
  18. )
  19. func Setup() {
  20. //加载配置
  21. confIni, errConf := conf.ConnIni()
  22. if errConf != nil {
  23. fmt.Println(errConf)
  24. }
  25. Host = confIni.MustValue("mysql", "mysql_host")
  26. Port = confIni.MustInt("mysql", "mysql_port")
  27. Name = confIni.MustValue("mysql", "mysql_name")
  28. Username = confIni.MustValue("mysql", "mysql_username")
  29. Password = confIni.MustValue("mysql", "mysql_password")
  30. var err error
  31. conn := GetMysqlConnect()
  32. log.Println(conn)
  33. var db Database
  34. db = new(Mysql)
  35. Eloquent, err = db.Open("mysql", conn)
  36. if err != nil {
  37. log.Fatalf("mysql connect error %v", err)
  38. } else {
  39. log.Printf("mysql connect success!")
  40. }
  41. if Eloquent.Error != nil {
  42. log.Fatalf("database error %v", Eloquent.Error)
  43. }
  44. Eloquent.LogMode(true)
  45. //McNew()
  46. }
  47. func GetMysqlConnect() string {
  48. var conn bytes.Buffer
  49. conn.WriteString(Username)
  50. conn.WriteString(":")
  51. conn.WriteString(Password)
  52. conn.WriteString("@tcp(")
  53. conn.WriteString(Host)
  54. conn.WriteString(":")
  55. conn.WriteString(strconv.Itoa(Port))
  56. conn.WriteString(")")
  57. conn.WriteString("/")
  58. conn.WriteString(Name)
  59. conn.WriteString("?charset=utf8mb4&parseTime=True&loc=Local&timeout=1000ms")
  60. return conn.String()
  61. }
  62. type Database interface {
  63. Open(dbType string, conn string) (db *gorm.DB, err error)
  64. }
  65. type Mysql struct {
  66. }
  67. func (*Mysql) Open(dbType string, conn string) (db *gorm.DB, err error) {
  68. eloquent, err := gorm.Open(dbType, conn)
  69. return eloquent, err
  70. }