Sqlite-Abfrage - Probleme mit unterschiedlichen Datentypen

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Linux-Fan
User
Beiträge: 8
Registriert: Samstag 30. Mai 2020, 15:03

Hallo,

frohe Weihnachten.

Ich möchte gerne aus einer Sqlite-Datenbank Daten (Typ REAL) einen Wert abfragen
Mit diesem Wert möchte ich dann Rechnungen durchführen.
Die Abfrage führe ich mit
.... = zeiger.execute("select ..... from ...... where ... = ?", (.......,))
...... = .........fetchone()
durch.
Der Wert wird auch richtig aus der Datenbank geholt. Er ist nur leider der Typ Tuple. Was dann zu Problemen bei der Berechnung z.B. mit Int- oder Float-Daten führt. Kann ich auch eine Abfrage als Foat-Typ durchführen bzw. wie kann Tuple in eine anderenen Typen umwandeln?

An anderer Stelle habe ich es hinbekommen, wenn ich in der Sqlite-Datenbank einen Integer-Typen habe.
Aber für REAL finde ich keine Lösung.

Vielleicht kann mir ja jemand einen Lösungsweg aufzeigen.

Vielen Dank und viele Grüße
Benutzeravatar
DeaD_EyE
User
Beiträge: 1017
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

`cursor.execute().fetchone()` gibt immer eine Tuple aus. Wenn nur eine Spalte abgefragt wird, hat man eine Tuple mit nur einem Wert. Mit iterable unpacking geht das:

Code: Alles auswählen

db = sqlite3.connection(":memory:")
cur = db.cursor()

result, = cur.execute("...").fetchone()
# besser zu erkennen
# das erste Element wird result zugewiesen und dann
# sind auf der linken seite die Zuweisungsziele zuende.
(result,) = cur.execute("...").fetchone()

# oder so
result = cur.execute("...").fetchone()[0]
Hier wird das mit dem iterable/tuple unpacking ausführlich beschrieben: https://realpython.com/lessons/tuple-as ... unpacking/
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Antworten