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说,你不能使用CREATE TABLE语句问号参数设置。粘表名称为直接的SQL。
如果你真的想这样做,尝试这样的事情:
DEF读取(分贝= “项目”):
sql = "select * from %s"
sql = sql % db
c.execute(sql)
不隶属于 StackOverflow