db.go 966 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package lib
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "gitdxz.51daxuetong.cn/go_dev/bids_rpcx/config"
  6. "gorm.io/driver/mysql"
  7. "gorm.io/gorm"
  8. "sync"
  9. "time"
  10. )
  11. var Db *gorm.DB
  12. var syncDb sync.Once
  13. func GetDb() *gorm.DB {
  14. syncDb.Do(func() {
  15. cc := config.GetConfig()
  16. fmt.Println(cc.All())
  17. dbHost := cc.String("db_host")
  18. dbPort := cc.String("db_port")
  19. dbName := cc.String("db_database")
  20. dbUser := cc.String("db_username")
  21. dbPwd := cc.String("db_password")
  22. dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", dbUser, dbPwd, dbHost, dbPort, dbName)
  23. db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
  24. if err != nil {
  25. panic(err.Error() + dsn)
  26. }
  27. sqlDB, err := db.DB()
  28. if err != nil {
  29. panic(err)
  30. }
  31. sqlDB.SetMaxIdleConns(1)
  32. sqlDB.SetMaxOpenConns(5)
  33. sqlDB.SetConnMaxLifetime(time.Hour)
  34. data, _ := json.Marshal(sqlDB.Stats()) //获得当前的SQL配置情况
  35. fmt.Println(data)
  36. Db = db
  37. })
  38. return Db
  39. }