sqlite3.OperationalError:无法识别的令牌:" {"

时间:2016-12-07 10:43:31

标签: python mysql sql sqlite

首先,我知道这里已有类似标题的帖子,我已经查看了这些问题的答案,但仍然无法从这些答案中找出解决方案。 (我的问题与其他问题略有不同)。

我需要能够在sqlite数据库中更新特定记录的字段值。我用来帮助解决这个问题的帖子之一是this

我在我的代码中使用了相同的格式:

updateCustomerTable = c.execute("UPDATE customerTable SET {} = ? WHERE customerID = ?").format(age), (newAge.get(),) , (customerID.get(),)

但是我收到一条错误消息:

sqlite3.OperationalError: unrecognized token: "{"

为什么开发者在其他帖子的答案中使用了大括号时不允许使用大括号?

1 个答案:

答案 0 :(得分:2)

此处(为了便于阅读而重新格式化代码):

c.execute(
    "UPDATE customerTable SET {} = ? WHERE customerID = ?"
    ).format(age)

所以实际上你在.format()的结果上调用c.execute(),而不是在你的SQL查询字符串上。如果查询是有效的SQL FWIW,它实际上会引发AttributeError

你想要的是:

sql = "UPDATE customerTable SET {} = ? WHERE customerID = ?".format(age)  
c.execute(sql, ...)