Seite 1 von 1

sqlite3-Datenbankinsert funktioniert nicht

Verfasst: Mittwoch 9. Februar 2022, 11:04
von AFX
Mit folgender Methode möchte ich einen Eintrag in eine sqlite3-Datenbank machen:

Code: Alles auswählen

def doQueryInsert2(conn, datum):
    cur = conn.cursor()
    empty = ""
    cur.execute("INSERT INTO appointment (datum, termin, description) VALUES("+datum+", Neuer Termin!,"+empty+")")
    conn.commit()
    cur.close()

Es kommt dabei aber eine Fehlermeldung, welche ich nicht so recht verstehe. Wenn dieses Skript ausgeführt werden soll, dann kommt eben diese Meldung:

sqlite3.OperationalError: near "00": syntax error


Ich verstehe nicht, was da falsch sein kann.

Re: sqlite3-Datenbankinsert funktioniert nicht

Verfasst: Mittwoch 9. Februar 2022, 11:17
von sparrow
Man bastelt keine SQL-Strings aus Zeichenketten zusammen. Das ist nicht "das ist schlechter Stil" sondern das ist eine eklatante Sicherheitslücke.
Man benutzt Platzhalter.

Schau in die Dokumentation.

Code: Alles auswählen

cur.execute("INSERT INTO appointment (datum, termin, description) VALUES(?, ?, ?)", (datum, "Neuer Termin!", empty))
Weiter:
Namen schreinbt man in Python klein_mit_unterstrich. Ausgenommen sind die Namen von Klassen (PascalCase) (nicht die Namen der Instanzen) und Konstanten (KOMPLETT_GROSS)

Re: sqlite3-Datenbankinsert funktioniert nicht

Verfasst: Mittwoch 9. Februar 2022, 18:09
von AFX
Danke, jetzt geht es :)