Variablen in SQLite übergeben

  • Hallo zusammen,

    ich stehe mal wieder auf dem Schlauch: Ich möchte Daten in eine SQLite Tabelle schreiben, unter anderem auch Datumswerte (genauer "Zeitstempel"). Den Zeitstempel möchte ich aus einer Variablen übergeben. Aktuell sieht das so aus:

    Meine Ausgabe sieht so aus:

    Code
    >>> %Run zeit.py
    <class 'datetime.datetime'>
    2021-06-18 23:37:09.391385
    <class 'str'>
    Traceback (most recent call last):
      File "/home/christian/Nextcloud2/python/zeit.py", line 22, in <module>
        cursor.execute(sql,werte)
    sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 26 supplied.

    Ich vermute, es hat damit zu tun, dass er irgendwie nicht mit dem Datetime Format zurecht kommt. Deshalb dachte ich mir, dass ich es zunächst in einen String umwandle. Ich stehe mal wieder auf dem Schlauch...

  • Hallo,

    Zitat
    Code
    werte = (now)

    liefert kein Tupel, was aber erwartet wird. Mit `werte = (now,)` (also mit einem Komma nach `now`) hast du ein 1-elementiges Tupel.

    Eigentlich sollte das ganze konvertieren aber auch unnötig sein, d.h. `cursor.execute(sql, (now,))` sollte auch funktionieren.

    Grundsätzlich sollte man bei Python + SQL Datenbank auch immer den Einsatz eines ORM wie SQLAlchemy oder Peewee in Betracht ziehen. Kann gerade, wenn es später etwas komplexer wird, Vorteile haben.

    Gruß, noisefloor

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!