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

问题描述:

首先,我知道这里已经有帖子和类似的标题,我已经查看了这些问题的答案,但仍然无法找出这些答案的解决方案。 (我的问题与其他问题稍有不同)。sqlite3.OperationalError:无法识别的令牌:“{”

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

我已经使用了相同的格式在我的代码在这里:

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

,但我得到一个错误信息:当开发人员使用它

sqlite3.OperationalError: unrecognized token: "{" 

为什么花括号不允许在其他职位的答案?

这里(代码重新格式化为可读性):

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

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

你想要的是:

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

我已经把在参数检索结果到执行行,所以c.execute(SQL,(newAge.get()),(的customerID。 get(),))但是这意味着有3个参数,其中2是给定的?我应该把其他东西放进那条线吗? – JoeW373

+0

这个问题解决了吗?如上所述,'.format()'方法必须在字符串语句中进行操作,查询参数作为列表或元组传递给一个附加参数。 – Parfait