package global import ( "fmt" "time" "electricity_bill_calc/config" // _ "github.com/lib/pq" _ "github.com/jackc/pgx/v5/stdlib" "xorm.io/xorm" ) var ( DBConn *xorm.Engine ) func SetupDatabaseConnection() error { var err error // 以下连接方式是采用pgx驱动的时候使用的。 DBConn, err = xorm.NewEngine("pgx", fmt.Sprintf( "postgresql://%s:%s@%s:%d/%s?sslmode=disable&", config.DatabaseSettings.User, config.DatabaseSettings.Pass, config.DatabaseSettings.Host, config.DatabaseSettings.Port, config.DatabaseSettings.DB, )) // 以下连接方式是采用lib/pq驱动的时候使用的。 // DBConn, err = xorm.NewEngine("postgres", fmt.Sprintf( // "host=%s user=%s password=%s dbname=%s port=%d sslmode=disable TimeZone=Asia/Shanghai connect_timeout=0", // config.DatabaseSettings.Host, // config.DatabaseSettings.User, // config.DatabaseSettings.Pass, // config.DatabaseSettings.DB, // config.DatabaseSettings.Port, // )) if err != nil { return err } DBConn.Ping() DBConn.SetMaxIdleConns(config.DatabaseSettings.MaxIdleConns) DBConn.SetMaxOpenConns(config.DatabaseSettings.MaxOpenConns) DBConn.SetConnMaxLifetime(60 * time.Second) return nil }