我有一个非常令人沮丧的问题
我有一个接受游标到sqlite3.Connection对象然后修改数据库的函数
我的代码是这样的:
#DOES NOT WORK
def update(dbc, tableName, value, value2):
dbc.execute("update ? set MyValue = ? where Something = ?;",\
[tableName, value, value2])
#WORKS
def update2(dbc, tableName value, value2):
dbc.execute("update {0} set MyValue = {1} where Something = {2};".format(
tableName, value, value2))
db = sqlite3.connect('data.db')
c = db.cursor()
c.execute("begin;")
update(c,"Something","Something Else") #FAILS
update2(c,"Something","Something Else") #OK
我收到错误:
sqlite3.OperationalError:near“?”:语法错误
我已经尝试注释掉第一个执行(“begin;”)语句,因为我并不真正理解它,但我知道它会在其他部分显着加快我的代码,而不必提交每一个输入。有没有人知道为什么会这样?
答案 0 :(得分:0)
数字显示,经过数小时的搜索,我会在接下来的10分钟内找到答案。表名不能以这种方式加载......看起来很傻。以下是原始答案的链接:SQLite parameter substitution problem