我正在使用pg8000
带有 Python 3 的包来查询表,并注意到应用程序的内存消耗随着表的记录数的增长而增长,现在已达到超过 16GB 的内存消耗。
在检查包的游标行为时,我发现游标在被 any或方法出队之前pg8000
将整个结果集缓存到属性下的内存队列中。curr._cached_rows
.fetchone()
.fetchmany(n)
.fetchall()
在我的特定情况下,我通过在 Glue 作业上使用 Python shell 来提取 AWS Redshift 上的记录,该作业带有 2 个限制:
- 不支持基于 Python 的 C 包(
psycopg
不幸的是,不支持服务器端游标的缓存) - 最大 16GB 内存。
我浏览了pg8000
文档,但找不到任何关于设置服务器端光标的参考。无论如何设置服务器端光标pg8000
?或者是否有任何其他支持服务器端光标的 postgres/redshift 纯 Python 包?