Pregunta

Creo que estoy siendo un tonto, tal vez no estoy importando el paquete correcto, pero cuando lo hago ...


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 

Esto tiene muy poco sentido para mí, ya que los documentos muestran que pysqlite es qmark parametrizado. Sin embargo, soy nuevo en python y db-api, ¡ayúdame! GRACIAS

¿Fue útil?

Solución

Esto se debe a que los parámetros solo se pueden pasar a VALUES. El nombre de la tabla no se puede parametrizar.

También tiene citas alrededor de un argumento parametrizado en la segunda consulta. Elimine las comillas, la biblioteca de subrayado se encarga de escapar automáticamente.

Otros consejos

Intente eliminar las comillas en la línea que se asigna a stmt2 :

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

Además, como dice nosklo, no se puede usar la parametrización de signos de interrogación con las declaraciones CREATE TABLE. Pegue el nombre de la tabla en el SQL directamente.

Si realmente quieres hacerlo, prueba algo como esto:

def read (db = " proyectos "):

sql = "select * from %s"
sql = sql % db
c.execute(sql)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top