Python pysqlite는 QMARK 매개 변수화를 수락하지 않습니다
-
19-08-2019 - |
문제
나는 내가 뼈 머리라고 생각하고 올바른 패키지를 가져 오지 않을 수도 있지만, 내가 할 때 ...
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를 처음 접했지만 나를 도와주세요! 감사해요
해결책
매개 변수는 값으로 만 전달 될 수 있기 때문입니다. 테이블 이름을 매개 변수화 할 수 없습니다.
또한 두 번째 쿼리의 매개 변수 인수에 대한 인용문이 있습니다. 따옴표를 제거하십시오. 탈출은 자동으로 밑줄 라이브러리에 의해 처리됩니다.
다른 팁
할당하는 줄에서 인용문을 제거 해보세요. stmt2
:
stmt2 = "insert into asgn values (?, ?)"
또한 Nosklo가 말했듯이 테이블 문을 작성하여 질문 표시 매개 변수화를 사용할 수 없습니다. 테이블 이름을 SQL에 직접 붙입니다.
정말로하고 싶다면 다음과 같은 것을 시도하십시오.
def read (db = "projects") :
sql = "select * from %s"
sql = sql % db
c.execute(sql)
제휴하지 않습니다 StackOverflow