python - sqlite3.操作错误: unrecognized token: "{"

标签 python mysql sql sqlite

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

我需要能够更新 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, ...)

关于python - sqlite3.操作错误: unrecognized token: "{",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41015330/

相关文章:

php - PHP 中的文本到图像/PDF 转换器

sql - 如何使用 SQL 为数据库表添加电话号码?

mysql - SUM 情况返回值而不使用 GROUP BY

Python:迭代一组符号

python - 统计一个txt文件中最常用的词

php - 登录页面的问题

mysql - 如何使用 CakePHP 3.0 将新记录插入数据库?

python - 使用 pyplot 中的箭袋函数绘制箭头的对数长度

python - 如何应用内核峰值为 1 的 3D 高斯滤波器?

php - 需要性能良好的SQL查询才能选择不符合条件的数据