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, ...)
我已经把在参数检索结果到执行行,所以c.execute(SQL,(newAge.get()),(的customerID。 get(),))但是这意味着有3个参数,其中2是给定的?我应该把其他东西放进那条线吗? – JoeW373
这个问题解决了吗?如上所述,'.format()'方法必须在字符串语句中进行操作,查询参数作为列表或元组传递给一个附加参数。 – Parfait