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 - Django 模型 - 两个表过滤器

python - Python中的快速互相关方法

python - 更新现有表/模型列/字段?

python - peewee:对象没有属性 _meta

python - Peewee 示例中带有主键的 SQL 语法错误

Python2.7 subprocess32 : how to share environment between two scripts executed via Popen?

python - Linux : python : clear input buffer before raw_input()

python - 排序规则错误 utf8mb4 与 peewee 的非法混合

python - peewee 自定义字段 - 定义允许值

python - 在 Python 中下载文件