문제

나는 내가 뼈 머리라고 생각하고 올바른 패키지를 가져 오지 않을 수도 있지만, 내가 할 때 ...


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)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top