python - 皮威 ORM : how to efficiently iterate over a large resultset

标签 python peewee

我希望我的程序在从 MySQL 服务器接收到行后立即开始处理行(行数多且连接速度慢)。

docs recommend for querying lots of rows : MyModel.select().iterator()

但是,似乎首先是数据库服务器发送所有数据,然后迭代器产生第一个结果(在另一个终端中使用 tcpdump 验证)。

我尝试使用原始数据库驱动程序 MySQLdbpymysql 来完成此操作,但结果似乎也得到了缓冲。

有可能吗?其他 Peewee 开发人员如何处理对大型数据集的迭代?

最佳答案

Willem,针对这个问题,Postgresql 提供了命名游标(或服务器端游标),peewee 支持:

http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#server-side-cursors

我对 MySQL 不是很熟悉,但也许它提供了类似的东西?

如果没有,您总是可以使用分块迭代器。

关于python - 皮威 ORM : how to efficiently iterate over a large resultset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32340286/

相关文章:

python - 如何定义多个数据框

python - 如何创建更改同一类属性的类属性

python - 使用 python peewee orm 预取数据库行

mysql - 使用 peewee 和 pymysql 设置 'charset=utf8' 时出现问题

peewee - Peewee中的自动递增字段

peewee - 什么可以替代 playhouse.test_utils 中的 test_database () 函数?

Python:Pandas 数据框 - 数据被覆盖而不是连接

python - 如何将 pandas 中的多列转换为单独的行/值?

python - 在 python 中插入或更新一条 peewee 记录

python - 两只随机行走的 turtle 的无限循环