从Postgres流式传输数据到Python

14

我正在寻求有关有效地从Postgres表中逐步流式传输数据到Python的建议。我正在实现一种在线学习算法,并希望将训练示例的批次从数据库表中读入内存以进行处理。对于最大化吞吐量的好方法,您有什么想法吗?感谢您的建议。


请详细说明日期将如何构建,“流式传输”可能只意味着转储表并从stdout读取(这很快,可能主要受限于您的I / O能力)。但我怀疑您想要一些结构,而应该做什么在很大程度上取决于它。 - knitti
没有什么花哨的东西。每行对应一个特征向量,通常带有整数或浮点值。我只是在扫描单个表的行。在Postgres中拥有它是一种方便的查询方式,当有额外的属性数据可用时。 - Chris
2个回答

22

如果您正在使用psycopg2,则需要使用命名游标,否则它会尝试一次将整个查询数据读入内存。

cursor = conn.cursor("some_unique_name")
cursor.execute("SELECT aid FROM pgbench_accounts")
for record in cursor:
    something(record)

这将按照2000批(itersize的默认值)从服务器获取记录,然后一个接一个地分配给循环。


好的,我会试一下。谢谢! - Chris
请注意设置 itersize;参见 http://initd.org/psycopg/docs/cursor.html - Craig Ringer
只有在您想自定义大小时才需要更改。命名游标的默认迭代大小为2000。 - saccodd
有什么想法关于node-postgres库会发生什么。 - PirateApp

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接