psycopg2を使用している場合は、名前付きカーソルを使用する必要があります。使用しない場合は、クエリデータ全体を一度にメモリに読み取ろうとします。
cursor = conn.cursor("some_unique_name")
cursor.execute("SELECT aid FROM pgbench_accounts")
for record in cursor:
something(record)
これにより、2000のバッチでサーバーからレコードがフェッチされます(デフォルト値のitersize
)次に、それらを一度に1つずつループに分割します。