我在使用psycopg2(我已经升级到版本2.5)的python脚本中对我的PostgreSQL数据库运行一个大查询。查询结束后,我关闭了游标和连接,甚至运行了gc,但该进程仍然消耗了大量内存(确切地说是7.3GB)。我是否漏掉了清理步骤?
import psycopg2
conn = psycopg2.connect("dbname='dbname' user='user' host='host'")
cursor = conn.cursor()
cursor.execute("""large query""")
rows = cursor.fetchall()
del rows
cursor.close()
conn.close()
import gc
gc.collect()
sqlalchemy
中找不到任何有助于避免OOM问题的东西,但这个解决方案对我很有效。谢谢! - ryantuckcreate_engine
中传递server_sider_cursors=True
,似乎可以在sqlalchemy
中实现此功能:http://docs.sqlalchemy.org/en/latest/dialects/postgresql.html?highlight=server_side_cursors#psycopg2-connect-arguments - FoxMulder900my_cursor_name = 1000
)?我想采用您的解决方案,在调用cursor.execute('query')
之前从我的Python脚本中设置FETCH_COUNT
。 - arilwanserver_side_cursors
已经被stream_results
取代了。 - Joril