sqlite3-Datenbankinsert funktioniert nicht

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
AFX
User
Beiträge: 51
Registriert: Samstag 4. September 2021, 08:40

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.
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

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)
AFX
User
Beiträge: 51
Registriert: Samstag 4. September 2021, 08:40

Danke, jetzt geht es :)
Antworten