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

Foi útil?

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)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top