无法为 python 的 mySQLDB 中的列名称传递变量

Trouble passing in variable for column name in mySQLDB for python

我正在使用 Python 的 mySQLDB 将变量传递给 Update Set 语句。除了更新字段以放入变量的变量外,所有传递的变量都有效。我真的不知道为什么会这样。如果有人能向我解释并给我一个可能的解决方案,我将不胜感激。 下面我输入我正在谈论的代码。注释掉的行完美地工作(尽管它只更新一个字段),而未注释的行是我试图用来遍历每个字段的内容

for y in range(1,col_count):
    field = 'field' + str(y)
    print field
    #cur.execute("UPDATE SQLDATABASE SET field1= %s WHERE file_name = %s AND               
    #slides_name = %s;",(temp_list[y],filename,temp_list[0]))
    cur.execute("UPDATE SQLDATABASE SET %s= %s WHERE file_name = %s AND  
    slides_name = %s;",(field,temp_list[y],filename,temp_list[0]))

参数占位符只能用于插入列名,不能用于插入 table 名称等(参见 the docs)。 也许试试这个:

cmd = 'UPDATE SQLDATABASE SET ' + field + ' = %s WHERE file_name'\
      ' = %s AND slides_name = %s;'
cur.execute(cmd, (temp_list[y],filename,temp_list[0]))