我想我是一个笨蛋,也许不是导入合适的包,但是当我做...


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)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top