2017-05-30 3 views
-1

for row in cur.execute("select business_id,count(text) from reviews group by business_id"):Was gibt "für Zeile in cur.execute (" sql query ") zurück?

Welche Art von Variablen gibt das zurück? Ist das row ein Tupel oder eine Liste? Wie verwende ich das row Element, um es in eine Zeichenfolge umzuwandeln und es in kleinere Strings zu schneiden?

+1

Erstens, warum versuchst du es nicht und sehen? Und zweitens sind Tupel und Listen hinsichtlich des Zugriffs auf Elemente völlig gleichwertig. –

+0

Probieren Sie es aus und sehen Sie! Eine einfache Möglichkeit, den Typ einer Variablen anzuzeigen, ist 'print (type (row))', wenn Sie aber nur '(print (row)) '' '' 'wenn es ein Tupel ist und' [] 'wenn es ist eine Liste. Sie können einen String aus einer Liste oder einem Tupel mit 'Join' erstellen. – cdarke

Antwort

1

Es gibt ein Tupel zurück. Nach der MySQL Connector-Dokumentation für cursor.fetchone():

Diese Methode ruft die nächste Zeile eines Abfrageergebnisses und gibt eine einzelne Sequenz oder None, wenn keine Zeilen mehr zur Verfügung stehen. Standardmäßig enthält das zurückgegebene Tupel Daten, die vom MySQL-Server zurückgegeben und in Python-Objekte konvertiert wurden.
...
Die Methode fetchone() wird von fetchall() und fetchmany() verwendet. Es wird auch verwendet, wenn ein Cursor als Iterator verwendet wird.

Sie können dann auf die Spalten zugreifen, indem Sie sie indexieren.

for row in cur.execute("select business_id,count(text) from reviews group by business_id"): 
    id = row[0] 
    count = row[1] 
    # Use id and count here 
+0

Also muss ich es über 'str (row)' in einen String verwandeln, um damit umgehen zu können? – Zap

+0

@Zap Ich sehe nicht, warum Sie das tun würden. Verwenden Sie einfach 'row [0] ', um die Business-ID zu erhalten, und' row [1] ', um die Anzahl zu erhalten. – Barmar