Seite 1 von 1
Wie SQL Resultat "(158L,)" in Zahl "158"
Verfasst: Freitag 2. April 2010, 19:05
von SwissMäc
Alle meine Versuche enden mit "
TypeError: int() argument must be a string or a number, not 'tuple'"
Die Abfrage stimmt, aber wie kann ich das wandeln ?
Code: Alles auswählen
result=cursor.fetchall()
print result[1]
int(result[1])
Re: Wie SQL Resultat "(158L,)" in Zahl "158&q
Verfasst: Freitag 2. April 2010, 19:13
von Hyperion
SwissMäc hat geschrieben:Alle meine Versuche enden mit "
TypeError: int() argument must be a string or a number, not 'tuple'"
Die Abfrage stimmt, aber wie kann ich das wandeln ?
Code: Alles auswählen
result=cursor.fetchall()
print result[1]
int(result[1])
Guck Dir doch mal die Ausgabe von result[1] genau an! fetchhall() liefert ein iterable von tupeln zurück. Du hast also kein Integer oder String, sondern ein Tupel! (das sagt Dir ja sogar die Fehlermeldung)
Verfasst: Freitag 2. April 2010, 19:21
von SwissMäc
Ich steh immer noch am Berg, ich will ja gar keine Tupel sondern ein Integer, aber ich weiss nicht wie man das macht ?
(Anfänger

)
Verfasst: Freitag 2. April 2010, 19:26
von Hyperion
SwissMäc hat geschrieben:Ich steh immer noch am Berg, ich will ja gar keine Tupel sondern ein Integer, aber ich weiss nicht wie man das macht ?
(Anfänger

)
Das kann man doch ein einer Shell leicht nachvollziehen:
Code: Alles auswählen
In [1]: (128L,)
Out[1]: (128L,)
In [2]: row = (128L,)
In [3]: int(row)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
C:\Dokumente und Einstellungen\nelson\Eigene Dateien\<ipython console> in <modul
e>()
TypeError: int() argument must be a string or a number, not 'tuple'
In [4]: row[0]
Out[4]: 128L
In [5]: int(row[0])
Out[5]: 128
Eine Datenbankabfrage liefert Dir immer eine bestimmte Anzahl an Tupeln zurück. Jedes Tupel kann nun einmal beliebig viele Einträge haben. In Deinem Falle ist es nur eins, da in Deiner Tabelle wohl nur eine Spalte vorhanden ist. Das Ergebnis ist dennoch eine beliebig große Anzahl an Tupeln.
Ein Tupel wiederum kann eben nur auch beliebig viele Einträge haben. Auch wenn es in Deinem Falle nur ein Wert ist, so liefert Dir Python hier eben dennoch den Wert als Eintrag eines Tupels. Du musst also per Index auf den Eintrag des Tupels zugreifen, den Du haben möchtest. In diesem Falle eben [0]...
Du solltest mal das Tutorial durcharbeiten. Dort werden die grundlegenden Datenobjekte von Python erklärt.
Verfasst: Samstag 3. April 2010, 17:52
von noisefloor
Hallo,
noch ein Tipp: Wenn du mehr als ein Ergebnis aus der DB-Abfrage hast, bekommst du immer ein Tuple von Tuplen. Da muss dran denken, wenn du die Daten aus dem Tuple holen willst.
Gruß, noisefloor
Verfasst: Samstag 3. April 2010, 17:53
von Hyperion
noisefloor hat geschrieben:Hallo,
noch ein Tipp: Wenn du mehr als ein Ergebnis aus der DB-Abfrage hast, bekommst du immer ein Tuple von Tuplen. Da muss dran denken, wenn du die Daten aus dem Tuple holen willst.
Gruß, noisefloor
Äh... das hatte ich bereits erwähnt
naja, doppelt hält besser
