Frage

Ich denke, dass ich ein Dummkopf bin zu sein, vielleicht nicht das richtige Paket zu importieren, aber wenn ich tun ...


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 

Das macht sehr wenig Sinn für mich, da die Dokumente zeigen, dass pysqlite ist Qmark parametrisiert. Ich bin neu in Python und db-api aber, helfen Sie mir! DANK

War es hilfreich?

Lösung

Das ist, weil Parameter können nur auf Werte übergeben werden. Der Tabellenname kann nicht parametrisiert werden.

Auch Sie haben Anführungszeichen um eine parametrisierte Argument auf der zweiten Abfrage. Entfernen Sie die Anführungszeichen, Flüchten von der Unterstreichung Bibliothek behandelt wird automatisch für Sie.

Andere Tipps

Versuchen Sie, die Anführungszeichen in der Zeile zu entfernen, die stmt2 zuweist:

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

Auch als nosklo sagt, kann man nicht Fragezeichen Parametrisierung verwendet mit CREATE TABLE-Anweisungen. Halten Sie die Tabellennamen in die SQL direkt.

Wenn Sie es wirklich tun wollen, versuchen, etwas wie folgt aus:

def lesen (db = "Projekte"):

sql = "select * from %s"
sql = sql % db
c.execute(sql)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top