sqlite SELECT Problem

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
gugugs
User
Beiträge: 113
Registriert: Dienstag 30. Dezember 2008, 12:38

sqlite SELECT Problem

Beitragvon gugugs » Sonntag 4. Januar 2009, 18:38

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'....')]???
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Beitragvon nemomuk » Sonntag 4. Januar 2009, 18:45

"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.
gugugs
User
Beiträge: 113
Registriert: Dienstag 30. Dezember 2008, 12:38

Beitragvon gugugs » Sonntag 4. Januar 2009, 19:20

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
Zuletzt geändert von gugugs am Sonntag 4. Januar 2009, 19:45, insgesamt 1-mal geändert.
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Beitragvon nemomuk » Sonntag 4. Januar 2009, 19:44

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.
BlackJack

Beitragvon BlackJack » Sonntag 4. Januar 2009, 20:45

@gugus: Wenn bei `fetchall()` ``[(u'blabla', u'bla')]`` herauskommt, kann nicht das gleiche kommen wenn man auf das erste Element zugreift.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder