我希望我的程序在从MySQL服务器收到行时开始处理行(很多行和慢速连接)。
docs recommend for querying lots of rows:MyModel.select().iterator()
。
但是,似乎首先DB服务器在迭代器产生第一个结果之前发送所有数据(在另一个终端中用tcpdump验证)。
我尝试使用原始数据库驱动程序MySQLdb
和pymysql
来完成此操作,但结果似乎也得到了缓冲。
有可能吗?其他Peewee开发人员如何处理迭代大型数据集?
答案 0 :(得分:3)
Willem,对于这个问题,Postgresql提供了peewee支持的命名游标(或服务器端游标):
http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#server-side-cursors
我对MySQL不是很熟悉,但也许它提供了类似的东西?
如果没有,你总是可以使用分块迭代器。