Вопрос

Я думаю, что я тупица, возможно, не импортирую нужную упаковку, но когда я это делаю ...


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 

Это имеет для меня мало смысла, так как документы показывают, что pysqlite параметризован qmark. Я новичок в Python и DB-API, хотя, помогите мне! БЛАГОДАРЯ

Это было полезно?

Решение

Это потому, что параметры могут быть переданы только в VALUES. Имя таблицы не может быть параметризовано.

Также у вас есть кавычки вокруг параметризованного аргумента во втором запросе. Удалите кавычки, экранирование обрабатывается автоматически подчеркивающей библиотекой.

Другие советы

Попробуйте удалить кавычки в строке, которая присваивается stmt2:

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

Кроме того, как говорит nosklo, нельзя использовать параметризацию с вопросительным знаком в инструкциях CREATE TABLE. Вставьте имя таблицы в SQL напрямую.

Если вы действительно хотите это сделать, попробуйте что-то вроде этого:

def read (db = " projects "):

sql = "select * from %s"
sql = sql % db
c.execute(sql)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top