Seite 1 von 1
mysql.connector Zeilenzahl liefern
Verfasst: Dienstag 10. Mai 2011, 00:24
von Gerenuk
Ich versuche die Zeilenzahl eines selects zu ermitteln, aber es kommt mit mysql.connector immer nur -1 raus

Vorschläge?
Ich schreibe
Code: Alles auswählen
cursor.execute("select * from abc")
count=cursor.rowcount
Mit select count(*) kam ich auch nicht weiter. Hmm..
Re: mysql.connector Zeilenzahl liefern
Verfasst: Dienstag 10. Mai 2011, 08:55
von lunar
@Gerenuk: Du musst wahrscheinlich die Ergebnisse abfragen, damit der Client weiß, wie viele Datensätze im Ergebnis enthalten sind. Das wäre zumindest logisch. Vor "cursor.rowcount" muss mithin "cursor.fetchall()" stehen.
So sollte man allerdings nicht zählen, da die Datenbank überflüssigerweise alle Ergebnisse zusammenstellen und übertragen muss. Effizienter ist es, die SQL-Funktion "count()" zu nutzen. Wieso hat das bei Dir nicht funktioniert? Wie hast Du es denn probiert?
Re: mysql.connector Zeilenzahl liefern
Verfasst: Dienstag 10. Mai 2011, 10:07
von Gerenuk
Ich vermute fast fetchall würde gehen, aber die Tabelle ist sehr groß.
Und mit count bekomme ich komischerweise auch eine -1:
Code: Alles auswählen
import mysql.connector
connection=mysql.connector.connect(...)
cursor=connection.cursor()
count=cursor.execute("select count(*) from mytable")
print(count)
Müsste man das anders ansprechen?
Re: mysql.connector Zeilenzahl liefern
Verfasst: Dienstag 10. Mai 2011, 10:14
von Xynon1
Hat cursor.excecute() denn einen Rückgabewert? Ich dachte man muss sich die Daten direkt vom cursor holen.
Code: Alles auswählen
cursor.execute("select count(ID) from mytable")
print cursor.fetchone()
Re: mysql.connector Zeilenzahl liefern
Verfasst: Dienstag 10. Mai 2011, 10:21
von Gerenuk
Oh, wie unschlau von mir

Mit fetchone gehts. Danke!