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