编程错误:1054 (42S22):'field list'中未知列''ColumnName
我正在用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给我的建议。