麻烦在mySQLDB中为python传递列名的变量

时间:2015-06-19 18:45:12

标签: python mysql mysql-python

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

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]))

1 个答案:

答案 0 :(得分:4)

参数占位符只能用于插入列名,而不能用于表名等。(参见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]))