因此,我尝试从本地的postgresql数据库中进行大量查询。
“processrecords”函数返回一个listofmalwareobjects,我假设每次服务器端光标运行时,我都需要向主列表添加一个新列表。
我有点困惑,该怎么做才合适呢?
我想我需要使用服务器端游标,否则程序会耗尽Psycopg2的内存。但是我听说过关于服务器端游标的好消息。
with connection:
cursor = connection.cursor()
with cursor:
cursor.itersize = 20000
cursor.execute("SELECT malware_id, malwarehashmd5, malwarehashsha1, malwarehashsha256g FROM malwarehashesandstrings")
listoffetchedmalware = cursor.fetchall()
listofmalwareobjects = processrecords(listoffetchedmalware)
1条答案
按热度按时间jq6vz3qz1#
有关文档:
Psycopg将数据库服务器端游标 Package 在命名游标中。命名游标是使用cursor()方法指定 * name * 参数创建的。
试试看:
但是,
fetchall()
仍然会一次返回所有行。如果您希望以bucket为单位处理数据,请在循环中使用fetchmany()
,例如: