将数据从Postgres流式传输到Python

将数据从Postgres流式传输到Python,python,postgresql,Python,Postgresql,我正在寻找关于将数据从Postgres表增量流式传输到Python的有效方法的建议。我正在实现一个在线学习算法,我想从数据库表中读取成批的训练示例到内存中进行处理。有没有关于最大化吞吐量的好方法的想法?谢谢你的建议 如果您使用的是psycopg2,那么您将希望使用命名游标,否则它将尝试立即将整个查询数据读取到内存中 cursor = conn.cursor("some_unique_name") cursor.execute("SELECT aid FROM pgbench_accounts")

我正在寻找关于将数据从Postgres表增量流式传输到Python的有效方法的建议。我正在实现一个在线学习算法,我想从数据库表中读取成批的训练示例到内存中进行处理。有没有关于最大化吞吐量的好方法的想法?谢谢你的建议

如果您使用的是psycopg2,那么您将希望使用命名游标,否则它将尝试立即将整个查询数据读取到内存中

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

这将从服务器上批量获取2000条记录(默认值为
itersize
),然后将它们一次一条打包到循环中。

您可能需要查看Postgres的侦听/通知功能

请详细说明日期的结构,“流式传输”它可能只是意味着转储表并从stdout读取(这很快,可能主要受I/O能力的限制)。但我怀疑你想要一些结构,而一个人应该做的是很大程度上依赖于它,这里没有什么特别的东西。每一行对应一个特定的特征向量,通常具有整数值或浮点值。我只是在扫描一张桌子的行。当有额外的属性数据可用时,将其放在Postgres中可以方便地进行查询。很酷,可以尝试一下。谢谢请注意,您应该设置
itersize
;仅当您要自定义尺寸时才查看。默认情况下,命名游标的itersize为2000。了解节点postgres库中发生了什么吗