有一个需求,是把表里面所有的数据都查询出来,并且生成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查询的问题吧。

golang实现chunk方式的查询的更多相关文章

  1. PDO多种方式取得查询结果

    PDO多种方式取得查询结果 01 December 2009 1:26 Tuesday by Sjolzy PDO最大的特点之一是它的灵活性,本节将介绍如何取得查询结果,包括: 数组(数值或关联数组) ...

  2. mybatis mapper xml文件的导入方式和查询方式

    mybatis mapper xml文件的导入方式和查询方式 ssm框架 Mybatis  mapper与SQLSession的关系 每个基于MyBatis的应用都是以一个SqlSessionFact ...

  3. MyBatis基础入门《四》接口方式.Select查询集合

    MyBatis基础入门<四>接口方式.Select查询集合 描述: 在<MyBatis基础入门<二>Select查询>中有说过,SQLSession有两种用法,这里 ...

  4. 014.CI4框架CodeIgniter数据库操作之:查询数据库,并让数据以对象的方式返回查询结果

    01. 我们在CI4框架中的Model文件夹新建一个User_model.php的文件,使用的是getResultArray,表示并让数据以数组的方式返回查询结果,代码如下: <?php nam ...

  5. 013.CI4框架CodeIgniter数据库操作之:查询数据库,并让数据以数组的方式返回查询结果

    01. 我们在CI4框架中的Model文件夹新建一个User_model.php的文件,使用的是getResultArray,表示并让数据以数组的方式返回查询结果,代码如下: <?php nam ...

  6. [Golang]字符串拼接方式的性能分析

    本文100%由本人(Haoxiang Ma)原创,如需转载请注明出处. 本文写于2019/02/16,基于Go 1.11.至于其他版本的Go SDK,如有出入请自行查阅其他资料. Overview 写 ...

  7. C#复习笔记(4)--C#3:革新写代码的方式(查询表达式和LINQ to object(下))

    查询表达式和LINQ to object(下) 接下来我们要研究的大部分都会涉及到透明标识符 let子句和透明标识符 let子句不过是引入了一个新的范围变量.他的值是基于其他范围变量的.let 标识符 ...

  8. sql语句查询条件的不同表达方式对查询性能的影响

    今天操作数据库遇到一个问题 目标表RA_AD_DAILY_DATA的数据量大概有5千万左右,其中的BUSINESS_DATE字段为日期类型 我要查询8月20号导入的三条记录,刚开始用这种方式去查: S ...

  9. python chunk 方式读取大文件——本质上还是file read自身支持

    参考:https://stackoverflow.com/questions/519633/lazy-method-for-reading-big-file-in-python 最优雅方式: file ...

随机推荐

  1. linux查看显卡

    查看 nvidia 显卡 $ lspci | grep -i nvidia 02:00.0 3D controller: nVidia Corporation Device 1023 (rev a1) ...

  2. 第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第八天】(solr服务器搭建、搜索功能实现)

    https://pan.baidu.com/s/1bptYGAb#list/path=%2F&parentPath=%2Fsharelink389619878-229862621083040 ...

  3. android studio 导入eclipse项目后的报错解决

    1.如何导入: 2.导入的时候会让你创建gradle,一直下一步,不用修改 3.编译, a.会报编码格式错误,如果有中文会报这个错,修改成utf-8 b.找不到类,解决办法 右键工程 引入外部的包,重 ...

  4. linux下tab作用的描述?

    [Tab] 接在一串指令的第一个字的后面,则为命令补全;     实例怎么描述?什么叫一串指令的第一个字?[Tab] 接在一串指令的第二个字以后时,则为『文件补齐』   实例怎么描述?什么叫一串指令的 ...

  5. SaltSack 中Job管理

    一.简介 Jid: job id的格式为%Y%m%d%H%M%S%f master在下发指令消息时,会附带上产生的jid,minion在接收到指令开始执行时,会在本地的cachedir(默认是/var ...

  6. springmvc register过程

    福建SEO:首先在AbstractHandlerMethodMapping中,在afterPropertiesSet这个钩子函数中,先初始化handlerMethods. 在detectHandler ...

  7. 893B. Beautiful Divisors#美丽的因子(打表法)

    题目出处:http://codeforces.com/problemset/problem/893/B 题目大意:找到一个数在二进制下,最大的以k个连续的1和k-1个连续的0组成的数字作为因子 #in ...

  8. redis day02 下

    位图:是二进制数据(0101101010)2^32 强势点: 01_login :101110(比如:第一天登录,二天没登录) 传统的字符串解决方案中 记录用户登录日期  统计堪忧 01_login_ ...

  9. [C#] 动态指定泛型类型

    前言 今天为了程序能写好看一点,一直在纠结怎么指定动态泛型, 但是想想实用性好像不太大,可是把这技术忘掉太可惜XD 还是记录下来,以防忘记 以下程序范例 类 cs 123456789101112131 ...

  10. docker E: Unable to locate package nginx

    在使用docker容器时,有时候里边没有安装vim,敲vim命令时提示说:vim: command not found,这个时候就需要安装vim,可是当你敲apt-get install vim命令时 ...