Jeśli używasz psycopg2, będziesz chciał użyć nazwanego kursora, w przeciwnym razie spróbuje wczytać do pamięci całe dane zapytania.
cursor = conn.cursor("some_unique_name")
cursor.execute("SELECT aid FROM pgbench_accounts")
for record in cursor:
something(record)
Spowoduje to pobranie rekordów z serwera w partiach 2000 (domyślna wartość itersize
), a następnie rozsyłaj je pojedynczo do pętli.