Nachdem ich bis zum Wahnsinn gesucht hatte, beschloss ich, hier eine Frage zu stellen. Ich versuche, eine SQLite3 -Datenbank zu erstellen, in der ich die sichere Funktion für variable Substitution der Funktion der Cursor.execute (SQL, Param) verwenden möchte. Meine Funktion lautet so:
#!/usr/bin/env python3
#-*- coding: utf-8 -*-
import sqlite3
def create():
values = ("data")
sql = "CREATE TABLE IF NOT EXISTS ? ( name TEXT, street TEXT, time REAL, age INTEGER )"
con = sqlite3.connect("database.db")
c = con.cursor()
c.execute(sql, values)
con.commit()
c.close()
con.close()
if __name__ = "__main__":
create()
Ich weiß, dass das erste Argument der SQL -Befehl in Form einer Zeichenfolge sein sollte und das zweite Argument ein Tupel der Werte sein muss, die dort ersetzt werden sollen, wo das? ist in der SQL -Zeichenfolge. Wenn ich jedoch die Datei ausführe, gibt sie den folgenden Fehler zurück:
$ ./test.py
Traceback (most recent call last):
File "./test.py", line 21, in <module>
create()
File "./test.py", line 14, in create
c.execute(sql, values)
sqlite3.OperationalError: near "?": syntax error
Dies geschieht auch, wenn Paramstyle auf benannt ist (z. B. das: Tabellenformular). Ich kann hier keinen Syntaxfehler erkennen, daher denke ich, dass das Problem irgendwo im System verursacht werden muss. Ich habe es an einer Archlinux- und Debian -Installation getestet, beide posten mir den gleichen Fehler.
Jetzt ist es los, da ich keine Ahnung mehr habe, wo ich nach der Sache suchen soll.