sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo puedo usar cursores del lado del servidor con django y psycopg2?

Como menciona en su pregunta, pero lo reiteraré aquí para futuros lectores:también es posible usar cursores con nombres explícitos sin pasar por alto la API pública de Django:

from django.db import connection, transaction

with transaction.atomic(), connection.cursor() as cur:
    cur.execute("""
        DECLARE mycursor CURSOR FOR
        SELECT *
        FROM giant_table
    """)
    while True:
        cur.execute("FETCH 1000 FROM mycursor")
        chunk = cur.fetchall()
        if not chunk:
            break
        for row in chunk:
            process_row(row)