Ich habe Python mit RDBMS' (MySQL und PostgreSQL) verwendet, und ich habe bemerkt, dass ich wirklich nicht verstehen, wie man einen Cursor zu verwenden.
Normalerweise lässt man sein Skript über eine Client-DB-API (wie psycopg2 oder MySQLdb) mit der DB verbinden:
connection = psycopg2.connect(host='otherhost', etc)
Und dann erstellt man einen Cursor:
cursor = connection.cursor()
Und dann kann man Abfragen und Befehle erteilen:
cursor.execute("SELECT * FROM etc")
Nun frage ich mich, wo das Ergebnis der Abfrage liegt. Ist es auf dem Server oder ein wenig auf meinem Client und ein wenig auf meinem Server? Und dann, wenn wir auf einige Ergebnisse zugreifen müssen, holen wir sie ab:
rows = cursor.fetchone()
oder
rows = cursor.fetchmany()
Angenommen, ich kann nicht alle Zeilen abrufen und beschließe, eine weitere Abfrage auszuführen, was geschieht dann mit den vorherigen Ergebnissen? Gibt es einen Overhead.
Auch sollte ich einen Cursor für jede Form des Befehls und kontinuierlich wiederverwenden es für diese gleichen Befehle irgendwie; Ich Kopf psycopg2 kann irgendwie optimieren Befehle, die viele Male ausgeführt werden, aber mit unterschiedlichen Werten, wie und ist es wert?
Vielen Dank