Domanda

Penso di essere un osso, forse non sto importando il pacchetto giusto, ma quando lo faccio ...


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 

Questo ha molto poco senso per me, poiché i documenti mostrano che pysqlite è parametrizzato con qmark. Sono nuovo di Python e db-api, aiutatemi! GRAZIE

È stato utile?

Soluzione

Questo perché i parametri possono essere passati solo a VALUES. Il nome della tabella non può essere parametrizzato.

Inoltre, nella seconda query sono presenti virgolette attorno a un argomento parametrizzato. Rimuovi le virgolette, l'escaping viene gestito automaticamente dalla libreria sottolineata per te.

Altri suggerimenti

Prova a rimuovere le virgolette nella riga che assegna a stmt2 :

    stmt2 = "insert into asgn values (?, ?)"

Inoltre, come dice nosklo, non è possibile utilizzare la parametrizzazione del punto interrogativo con le istruzioni CREATE TABLE. Inserisci direttamente il nome della tabella nell'SQL.

Se vuoi davvero farlo, prova qualcosa del genere:

def read (db = " progetti "):

sql = "select * from %s"
sql = sql % db
c.execute(sql)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top