Después de buscar una locura, decidí publicar una pregunta aquí. Intento crear una base de datos SQLITE3 donde me gustaría hacer uso de la función de sustitución de variable segura de la función Cursor.Execute (SQL, Param). Mi función es así:
#!/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()
Sé que el primer argumento debe ser el comando SQL en forma de una cadena y el segundo argumento debe ser una tupla de los valores que se supone que deben ser sustituidos donde el? está en la cadena SQL. Sin embargo, cuando ejecuto el archivo devuelve el siguiente error:
$ ./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
Esto también sucede cuando se establece paramStyle en el nombre (por ejemplo, el formulario: tabla). No puedo detectar un error de sintaxis aquí, así que creo que el problema debe ser causado en algún lugar del sistema. Lo probé en una instalación de Archlinux y Debian, ambos publican el mismo error.
Ahora te está yendo, ya que ya no tengo idea de dónde buscar la causa.