2017-01-25 4 views
0

Ich benutze PyMySQL 0.7.9 mit MySQL 5.1.73. Ich muss zwei Operationen mit demselben PyMySQL-Cursor ausführen. Nachdem die erste Operation auf dem Cursor abgeschlossen ist, muss der Cursor wieder an den Anfang gebracht werden.PyMySQL Cursor zum Anfang bringen

import pymysql; 

cursor.execute("my query"); 
# First operation 
for row in cursor : 
    # run update query to update status flag for all rows fetched. 

# Second Operation 
for row in cursor : 
    # run some more commands for the rows. 

Ich habe

cursor.rownumber = 0
vor der zweiten Operation. Es funktionierte. Aber gibt es irgendeine PyMySQL-Funktion, mit der ich dasselbe erreichen kann? Gibt es etwas ähnliches in PyMySQL zu http://php.net/manual/en/mysqli-result.data-seek.php

+1

Sie können 'Cursor.scroll (0, mode = 'absolute')' verwenden. Es wird buchstäblich das gleiche wie 'cursor.rownumber = 0' (weil das ist, was innerhalb dieser Funktion ausgeführt wird). – Solarflare

+0

cursor.scroll hat funktioniert. Vielen Dank @Solarflare. Bitte geben Sie dies als Antwort an. Ich werde es auswählen. – bgth

Antwort

1

Nach der API-Definition, können Sie die scroll Funktion verwenden können:

cursor.scroll(value [, mode='relative' ])

Scroll der Cursor in der auf eine neue Position gesetzt Ergebnis je nach Modus.

Wenn Modus relativ (default), wird Wert auf die aktuelle Position in der Ergebnismenge Offset genommen, wenn auf absolute, Wert Zustände absolute Zielposition.

So in der ersten Reihe zu springen, Sie

cursor.scroll(0, 'absolute') 

Intern verwenden können, pymysql tatsächlich cursor.rownumber = 0 auch nur auszuführen.

Dies funktioniert nur mit einer normalen cursor, nicht mit der ungepufferten SScursor, wo Sie (derzeit) nur vorwärts scrollen können.

Verwandte Themen