Après avoir cherché jusqu'à la folie, j'ai décidé de poster une question ici. J'essaie de créer une base de données SQLite3 où je voudrais utiliser la fonction de substitution de variable sécurisée de la fonction cursor.exécute (SQL, PARAM). Ma fonction va comme ceci:
#!/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()
Je sais que le premier argument devrait être la commande SQL sous forme d'une chaîne et que le deuxième argument doit être un tuple des valeurs qui sont censées être substituées où le? est dans la chaîne SQL. Cependant, lorsque j'exécute le fichier, il renvoie l'erreur suivante:
$ ./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
Cela se produit également lorsque Paramstyle est défini sur le nom (par exemple le formulaire de table). Je ne peux pas repérer une erreur de syntaxe ici, donc je pense que le problème doit être causé quelque part dans le système. Je l'ai testé sur une installation Archlinux et Debian, les deux me publient la même erreur.
Maintenant, c'est de vous, car je ne sais plus où chercher la cause.