golang 批量查询再删除

本次主要是解决大批量的删除数据报数据库连接被远程拒绝问题,更好的方式是把切片换成管道,但我没有试验成功,这里依旧使用切片来处理

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package main
 
import (
    "database/sql"
    "fmt"
 
    _ "github.com/go-sql-driver/mysql"
)
 
type ConnectDB struct {
    Dsn    string
    Db     *sql.DB
    IdList []string
}
 
type UserStudyRelDuration struct {
    Id sql.NullString `json:"id"`
}
 
func (db *ConnectDB) queryUserRelId() {
    rows, err := db.Db.Query("SELECT id FROM user_info WHERE time < \"2022-01-31\"")
    if err != nil {
        fmt.Println(err)
    }
    defer rows.Close()
    u := UserStudyRelDuration{}
    for rows.Next() {
        if err := rows.Scan(&u.Id); err != nil {
            fmt.Println(err)
        }
        db.IdList = append(db.IdList, u.Id.String)
    }
}
 
func (db *ConnectDB) deleteData() {
    for _, id := range db.IdList {
        fmt.Println(id)
        if _, err := db.Db.Exec("DELETE FROM user_info WHERE id=?", id); err != nil {
            fmt.Println(err)
        }
    }
}
 
func main() {
    var err error
    db := ConnectDB{
        Dsn: "root:123456@(127.0.0.1:3306)/?charset=utf8mb4&parseTime=True&loc=Local",
    }
    db.Db, err = sql.Open("mysql", db.Dsn)
    if err != nil {
        fmt.Println("Open db filed: ", err)
    }
    defer db.Db.Close()
    db.queryUserRelId()
    db.deleteData()
}

 

  

posted @   昌慶  阅读(118)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示