¿Cómo funcionan los cursores en la DB-API de Python?

He estado usando python con RDBMS '(MySQL y PostgreSQL), y he notado que realmente no entiendo cómo usar un cursor.

Por lo general, uno tiene su script conectado a la base de datos a través de un cliente DB-API (como psycopg2 o MySQLdb):

connection = psycopg2.connect(host='otherhost', etc)

Y luego uno crea un cursor:

cursor = connection.cursor()

Y luego uno puede emitir consultas y comandos:

cursor.execute("SELECT * FROM etc")

Ahora, ¿dónde está el resultado de la consulta, me pregunto? ¿Está en el servidor? o un poco en mi cliente y un poco en mi servidor? Y luego, si necesitamos acceder a algunos resultados, los buscamos:

rows = cursor.fetchone() 

o

rows = cursor.fetchmany()

Ahora digamos que no recupero todas las filas y decido ejecutar otra consulta, ¿qué pasará con los resultados anteriores? Es su una sobrecarga.

Además, ¿debería crear un cursor para cada forma de comando y reutilizarlo continuamente para esos mismos comandos de alguna manera; Me dirijo que psycopg2 puede optimizar de alguna manera los comandos que se ejecutan muchas veces pero con diferentes valores, ¿cómo y vale la pena?

Gracias

Respuestas a la pregunta(3)

Su respuesta a la pregunta