Python pysqlite не принимает мою параметризацию qmark
Я думаю, что я тупица, возможно, не импортирую нужную упаковку, но когда я делаю...
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]])
...
Я получаю ошибку pysqlite2.dbapi2.OperationalError: вблизи "?": Синтаксическая ошибка
Это мало что значит для меня, так как документы показывают, что pysqlite параметризован qmark. Я новичок в Python и DB-API, хотя, помогите мне! СПАСИБО
3 ответа
Это потому, что параметры могут быть переданы только в 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)