Si vous utilisez psycopg2, vous voudrez utiliser un curseur nommé, sinon il essaiera de lire toutes les données de la requête en mémoire en une seule fois.
cursor = conn.cursor("some_unique_name")
cursor.execute("SELECT aid FROM pgbench_accounts")
for record in cursor:
something(record)
Cela récupérera les enregistrements du serveur par lots de 2000 (valeur par défaut de itersize
) puis répartissez-les dans la boucle une par une.