Question

Je pense que je suis un os, n'important peut-être pas le bon paquet, mais quand je le fais ...


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 

Cela n’a guère de sens pour moi, car la documentation montre que pysqlite est paramétré par qmark. Je suis nouveau dans python et db-api, aidez-moi! MERCI

Était-ce utile?

La solution

En effet, les paramètres ne peuvent être transmis qu'à VALUES. Le nom de la table ne peut pas être paramétré.

Vous avez également des guillemets autour d'un argument paramétré dans la deuxième requête. Supprimez les guillemets, l’échappement est géré automatiquement par la bibliothèque de soulignement.

Autres conseils

Essayez de supprimer les guillemets dans la ligne qui attribue à stmt2 :

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

De plus, comme le dit nosklo, vous ne pouvez pas utiliser le paramétrage de point d'interrogation avec les instructions CREATE TABLE. Collez directement le nom de la table dans le code SQL.

Si vous voulez vraiment le faire, essayez quelque chose comme ceci:

def read (db = "" projets "):

sql = "select * from %s"
sql = sql % db
c.execute(sql)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top