depois de pesquisar até a loucura, resolvi postar uma pergunta aqui.Tento criar um banco de dados sqlite3 onde gostaria de usar a função de substituição de variável segura da função cursor.execute(SQL, param).Minha função é assim:
#!/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()
Eu sei que o primeiro argumento deve ser o comando sql na forma de uma string e o segundo argumento deve ser uma tupla dos valores que devem ser substituídos onde o ?está na string sql.Porém, quando executo o arquivo ele retorna o seguinte erro:
$ ./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
Isso também acontece quando paramstyle é definido como nomeado (por exemplo,o formato :table).Não consigo identificar um erro de sintaxe aqui, então acho que o problema deve ser causado em algum lugar do sistema.Eu testei em uma instalação do Archlinux e do Debian, ambos postaram o mesmo erro.
Agora é com você, pois não tenho mais ideia de onde procurar a causa.