Seite 1 von 1
SQLITE daten weilerverarbeiten
Verfasst: Dienstag 27. August 2019, 16:55
von Lalay
hey ich habe mit hilfe von SQLite eine Datenbank erstellt... und möchte nun aus dieser etwas auslesen...
Code: Alles auswählen
def daten_auslesen():
cur.execute('SELECT Schild FROM Worldof')
data = cur.fetchone()
print(data)
wenn ich das ganze laufen lasse wird (8,) ausgegeben und ich möchte nun mit dieser zahl weiterarbeiten:
Code: Alles auswählen
Schild = daten_auslesen()
if Schild == 8:
print("Hat funktioniert")
else:
print("mist")
leider sagt er mir immer das Schild nicht 8 ist ...
Re: SQLITE daten weilerverarbeiten
Verfasst: Dienstag 27. August 2019, 17:03
von /me
Lalay hat geschrieben: Dienstag 27. August 2019, 16:55
leider sagt er mir immer das Schild nicht 8 ist ...
Der Wert ist ja auch nicht 8 sondern (8, ). Das ist ein Tupel mit einem Element. Wie du darauf zugreifst ist dir sicher bekannt, sonst schau noch mal in die Dokumentation. Abgesehen davon gibst du den Wert aus der Funktion gar nicht zurück.
Übrigens, was bringt dich darauf, dass diese Frage nach "Allgemeine Fragen" und nicht in das Unterforum "Datenbankprogrammierung mit Python" gehört?
Re: SQLITE daten weilerverarbeiten
Verfasst: Dienstag 27. August 2019, 17:04
von __deets__
fetchone liefert immer eine Zeile, und die als Tupel. Auch wenn da nur ein Element drin ist. Siehst du ja auch in deiner Ausgabe: (8,) ist eben ein Tupel, mit einem Element, und das ist 8. Wenn du da ran willst gibt's verschieden Moeglichkeiten,
schild, = cur.fetchone()
ist eine,
schild = cur.fetchone()[0]
eine andere.
Was dir dann natuerlich auch noch fehlt ist das "return schild" in daten_auslesen. Denn jetzt gibst du immer None zurueck, und das ist ja auch niemals 8.
Last but not least: magische Nummern so wie 8 sind doof. Benutz eine Konstante, zB
BUCKLE_SHIELD = 8
und pruefe darauf.
Re: SQLITE daten weilerverarbeiten
Verfasst: Dienstag 27. August 2019, 17:10
von __blackjack__
Wobei man wenn man magische Nummern hat die irgendwie zusammengehören, statt einer einfachen Konstante auch ein `enum.Enum`-Objekt erstellen kann, beziehungsweise in diesem Fall vielleicht ein `enum.IntEnum`