zoukankan      html  css  js  c++  java
  • golang实现chunk方式的查询

    有一个需求,是把表里面所有的数据都查询出来,并且生成json文件。因为一张表里面的数据很多,所以不可能一次性全部查询出来,所以需要用到chunk。之前用的gorm,但是发现gorm没有chunk方式的查询。如果要自己去实现这种操作,就需要去管理偏移量,而且还容易出现bug,所以就找了一个库,叫做gorose。用起来挺舒服的。

    代码如下:

    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
    package main

    import (
    "fmt"

    "github.com/gohouse/gorose"
    )


    // type User struct {
    // ID int
    // UserName string
    // }

    const (
    dbHost = "tcp(host.docker.internal:3306)"
    dbName = "test"大专栏  golang实现chunk方式的查询span>
    dbUser = "root"
    dbPassword = "123456"
    )

    func () {
    dsn := dbUser + ":" + dbPassword + "@" + dbHost + "/" + dbName + "?charset=utf8"
    var dbConfig = gorose.DbConfigSingle{
    Driver: "mysql",
    Dsn: dsn,
    }

    connection, err := gorose.Open(&dbConfig)
    if err != nil {
    fmt.Println(err)
    return
    }

    session := connection.NewSession()

    user := session.Table("users")
    user.Fields("id", "username", "number").Chunk(2, func(data []map[string]interface{}) {
    fmt.Println(data)
    })
    }

    执行结果如下:

    1
    2
    3
    4
    5
    ~/codeDir/golangCode/test # go run main.go
    [map[id:1 username:a number:1] map[id:2 username:b number:2]]
    [map[number:3 id:3 username:c] map[id:4 username:d number:4]]
    [map[id:5 username:e number:5]]
    ~/codeDir/golangCode/test #

    可以看出,每次都会查询出2条记录。

    这个框架一个缺点就是文档不是很清楚,报错也有点不习惯。但是先用这个库解决一下chunk查询的问题吧。

  • 相关阅读:
    MD53D模型
    WPF 关于变换
    WPF 关于圆角的制作
    [转载]MVVM、MVVMLight、MVVMLight Toolkit之我见
    Surface Pro 调整空间大小
    WPF 图片浏览 伪3D效果
    WPF 实现视频循环播放
    WPF MediElement 视频播放
    WPF INotifyPropertyChanged
    Matlab摄像头视频基本处理
  • 原文地址:https://www.cnblogs.com/lijianming180/p/12239805.html
Copyright © 2011-2022 走看看