Python não pysqlite aceitar minha qmark parametrização
-
19-08-2019 - |
Pergunta
Eu acho que eu estou sendo um bonehead, talvez não importando o pacote certo, mas quando eu faço ...
from pysqlite2 import dbapi2 as sqlite
import types
import re
import sys
...
def create_asgn(self):
stmt = "CREATE TABLE ? (login CHAR(8) PRIMARY KEY NOT NULL, grade INTEGER NOT NULL)"
stmt2 = "insert into asgn values ('?', ?)"
self.cursor.execute(stmt, (sys.argv[2],))
self.cursor.execute(stmt2, [sys.argv[2], sys.argv[3]])
...
I get the error pysqlite2.dbapi2.OperationalError: near "?": syntax error
Isso faz muito pouco sentido para mim, como os documentos mostram que pysqlite é qmark parametrizada. Eu sou novo para python e db-api embora, me ajudem! OBRIGADO
Solução
Isso porque parâmetros só podem ser passados ??para VALUES. O nome da tabela não pode ser parametrizada.
Além disso você tem aspas em torno de um argumento parametrizada na segunda consulta. Remova as aspas, escapando é manipulado pela biblioteca sublinhado automaticamente para você.
Outras dicas
Tente remover as aspas na linha que atribui a stmt2
:
stmt2 = "insert into asgn values (?, ?)"
Além disso, como nosklo diz, você não pode usar parametrização de ponto de interrogação com CREATE TABLE. Furar o nome da tabela para o SQL diretamente.
Se você realmente quiser fazê-lo, tente algo como isto:
def ler (db = "projectos"):
sql = "select * from %s"
sql = sql % db
c.execute(sql)