Python 2.7问题与sqlite3.Cursor.execute函数有关

时间:2012-09-12 06:15:29

标签: python sqlite

我有一个非常令人沮丧的问题

我有一个接受游标到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;”)语句,因为我并不真正理解它,但我知道它会在其他部分显着加快我的代码,而不必提交每一个输入。有没有人知道为什么会这样?

1 个答案:

答案 0 :(得分:0)

数字显示,经过数小时的搜索,我会在接下来的10分钟内找到答案。表名不能以这种方式加载......看起来很傻。以下是原始答案的链接:SQLite parameter substitution problem