我认为自己是个傻瓜,也许不会导入正确的包装,但是当我这样做时......
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的新手,帮助我!致谢
答案 0 :(得分:7)
那是因为参数只能传递给VALUES。表名不能参数化。
此外,您还在第二个查询的参数化参数周围引用了引号。删除引号,转义由下划线库自动处理。
答案 1 :(得分:2)
尝试删除分配给stmt2
的行中的引号:
stmt2 = "insert into asgn values (?, ?)"
另外,正如nosklo所说,你不能在CREATE TABLE语句中使用问号参数化。将表名直接粘贴到SQL中。
答案 2 :(得分:1)
如果你真的想这样做,试试这样的事情:
def读取(db =“projects”):
sql = "select * from %s"
sql = sql % db
c.execute(sql)