Seite 1 von 1

sqlite SELECT Problem

Verfasst: Sonntag 4. Januar 2009, 18:38
von gugugs
Wenn ich Daten aus der Datenbank folgendermaßen abrufe:

Code: Alles auswählen

import sqlite3

con=sqlite3.connect("test.db")
cur=con.cursor()
cur.execute ("SELECT bla1, bla2 FROM test")
print cur.fetchall()
Dann bekomme meine Ausgabe in folgender Struktur:

[(u'blabla', u'bla')]

Wie stelle ich es am besten an, dass ich einmal mein blabla in einer einzelnen Variable und mein bla in einer einzelnen variable habe, ohne das [(u'....', u'....')]???

Verfasst: Sonntag 4. Januar 2009, 18:45
von nemomuk
"fetchall" gibt ein Tupel mit den einzelnen Reihen als Liste zurück.

Willst du das ausgeben, mach das per liste[index] oder iteriere über diese mit "for".
Schau dir mal A Byte of Python an, dir scheinen die Grundlagen zu fehlen.

Verfasst: Sonntag 4. Januar 2009, 19:20
von gugugs
Das versteh ich nicht liste[0] gibt [(u'blabla', u'bla')] aus, also die ganze Ausgabe und liste[1] dann logischerweise nichts mehr. Das heist doch dann eig. das fetchall nicht die einzelnen Reihen als Liste zurück gibt? Oder hab ich jetzt alles falsch verstanden?

edit: Ahh es muss fetchone, nicht fetchall sein

Verfasst: Sonntag 4. Januar 2009, 19:44
von nemomuk
Normalerweise sollte liste[0] nicht "[(u'blabla', u'bla')]" ausgeben, sondern "(u'blabla', u'bla')".
Wenn du jetzt noch liste[0][0] eingibst, dann verstehst du, wie das funktioniert.

Doch es gibt die einzelnen Reihen als Liste zurück. und drin sind wieder Tuple, die die Werte der einzelnen Spalten dieser Reihe beinhalten.

Verfasst: Sonntag 4. Januar 2009, 20:45
von BlackJack
@gugus: Wenn bei `fetchall()` ``[(u'blabla', u'bla')]`` herauskommt, kann nicht das gleiche kommen wenn man auf das erste Element zugreift.