Python pysqlite не принимает мою параметризацию qmark - PullRequest
1 голос
/ 23 января 2009

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

<code>
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]])
...
</code> I get the error pysqlite2.dbapi2.OperationalError: near "?": syntax error 

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

Ответы [ 3 ]

7 голосов
/ 23 января 2009

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

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

2 голосов
/ 23 января 2009

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

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

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

1 голос
/ 21 февраля 2009

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

def read (db = "projects"):

sql = "select * from %s"
sql = sql % db
c.execute(sql)
...