编程错误:1054 (42S22):'field list'中未知列''ColumnName

0 投票
1 回答
7652 浏览
提问于 2025-04-18 09:45

我正在用Connector/Python从一个Python脚本更新MySQL数据库。

update_table = ("UPDATE Users "
            "SET `%s` = %s "
            "WHERE Id = %s ")
cursor.execute(update_table, (columnname, value, id))

但是我遇到了这个错误:

ProgrammingError: 1054 (42S22): 在'字段列表'中找不到未知列''ColumnName''

其实我确实有一个叫ColumnName的列。我觉得可能是引号的问题,也就是说,它可能在找'ColumnName'而不是ColumnName。不过,比如说,如果我去掉反引号(`),让update_table看起来像这样:

update_table = ("UPDATE Users "
            "SET %s = %s "
            "WHERE Id = %s ")
cursor.execute(update_table, (columnname, value, id))

我又遇到了另一个错误:

ProgrammingError: 1064 (42000): 你的SQL语法有错误;请检查与你的MySQL服务器版本相对应的手册,确保在第1行的'ColumnName' = 'Somebody' WHERE Id = '0000'附近使用正确的语法

有没有什么办法可以解决这个问题?谢谢!

1 个回答

3

对于那些想知道我是怎么解决这个问题的朋友:

update_table = ("""UPDATE Users 
SET %s = '%s' 
WHERE Id = '%s' """)
cursor.execute(update_table%(columnname, value, id))

感谢furas和John Ruddell给我的建议。

撰写回答