2015-06-19 45 views
1

我正在使用Python的mySQLDB将变量传递给Update Set Statement。所有的变量都在工作中传递,除了更新字段来放置变量。我真的不知道为什么会发生这种情况。如果有人能向我解释并给我一个可能的解决方案,我会很感激。 下面我输入我正在谈论的代码。注释掉线完美的作品(虽然只更新一个字段)和注释掉线是什么,我试图利用要经过各个领域麻烦在mySQLDB for python中为列名称传递变量

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

回答

2

参数占位符只能用插入的列名,而不是表格名称等(见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])) 
+0

非常感谢你的工作,回想起来似乎非常明显! –

+0

非常欢迎!很高兴为你工作。 – xnx