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!