package test import ( "database/sql" "fmt" "gorm.io/driver/mysql" "gorm.io/gorm" "strings" "time" ) var db *gorm.DB var sqlDB *sql.DB type WarningDB struct { Id int64 `gorm:"column:ID;type:bigint;primaryKey"` T_pid int32 `gorm:"column:t_pid;"` // Account.Company 绑定公司 T_tp int `gorm:"column:t_tp;"` // 报警类型 ->WarningList T_sn string `gorm:"column:t_sn;index;size:256;"` // 设备序列号 T_D_name string `gorm:"column:t__d_name;size:256;"` // 设备名称 T_id int32 `gorm:"column:t_id;"` // 传感器 ID T_DS_name string `gorm:"column:t__d_s_name;size:256;"` // 传感器名称 T_Remark string `gorm:"column:t__remark;type:longtext;"` // 采集内容 T_Ut time.Time `gorm:"column:t__ut;type:datetime;"` // 采集时间 T_fUt time.Time `gorm:"column:t_f_ut;type:datetime;"` // 首次采集时间 T_Text string `gorm:"column:t__text;type:longtext;"` // 处理备注 T_Log string `gorm:"column:t__log;type:longtext;"` // 通知日志 T_Msid int32 `gorm:"column:t__msid;"` // 消息ID T_State int `gorm:"column:t__state;size:2;default:2"` // 0 删除 1 不处理 2 已处理 3 未处理 CreateTime time.Time `gorm:"column:create_time;type:datetime;autoUpdateTime"` //auto_now_add 第一次保存时才设置时间 UpdateTime time.Time `gorm:"column:update_time;type:datetime;autoCreateTime"` //auto_now 每次 model 保存时都会对时间自动更新 } var MysqlServer_UrlPort = "127.0.0.1:40306" var MysqlServer_Database = "cold" var MysqlServer_Username = "cold" var MysqlServer_Password = "yjwyEckZS7rE5H!" func init() { // 连接数据库 var err error dsn := MysqlServer_Username + ":" + MysqlServer_Password + "@tcp(" + MysqlServer_UrlPort + ")/" + MysqlServer_Database + "?charset=utf8mb4&loc=Local&parseTime=True" db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{}) if err != nil { fmt.Println(err) } sqlDB, err = db.DB() // SetMaxIdleConns 设置空闲连接池中的最大连接数。 sqlDB.SetMaxIdleConns(1) // SetMaxOpenConns 设置数据库连接最大打开数。 sqlDB.SetMaxOpenConns(10) // SetConnMaxLifetime 设置可重用连接的最长时间 sqlDB.SetConnMaxLifetime(time.Hour) //db.AutoMigrate(&DeviceWarning{}) //db.SetLogger(log.New(logs.LogxOrm, "\r\nWarningBack:", 0)) fmt.Println("db init") } func Handy(time_a, time_b, WHERE string) { var TABLE = "warning_2024_04" //var TABLE = "my_users" var count int64 var Warning_list []WarningDB //rows, _ := db.Raw("SELECT * FROM "+TABLE+" WHERE `t_tp` = ? LIMIT 10,20;", 110).Rows() // (*sql.Rows, error) db.Table(TABLE).Where("t_tp = ?", 110).Count(&count) db.Table(TABLE).Where("t_tp = ?", 110).Limit(10).Offset(0).Find(&Warning_list) return } func (t *WarningDB) Create(TableName string) { CreateSQL: result := db.Table(TableName).Create(t) if result.Error != nil { if strings.Compare(result.Error.Error(), "doesn't exist") != 0 { db.Table(TableName).AutoMigrate(&WarningDB{}) goto CreateSQL } } }