Aqui está um exemplo:
import MySQLdb
column = str(MySQLdb.escape_string(row[1]))
query = "update myTable set %(column)s = %%s where ID = %%s" % dict(column = column)
cursor2.execute(query, [row[3], row[0]])
Atualizar
Segue um breve comentário:
column = str(MySQLdb.escape_string(row[1]))
Sempre é uma boa ideia escapar de qualquer coisa que entre em uma consulta. Nesse caso, estamos adicionando dinamicamente um nome de coluna e, portanto, ele deve ser escapado antes que a consulta seja executada.
query = "update myTable set %(column)s = %%s where ID = %%s" % dict(column = column)
Estou formando a consulta aqui. Estou tentando conseguir duas coisas:(1) formar uma consulta com o nome da coluna preenchido usando a
column
A variável declarada na linha anterior (2) adiciona placeholders que serão preenchidos pelos parâmetros reais durante a execução da consulta. O trecho
dict(column = column)
é na verdade outra maneira de criar o dicionário {'column': column}
. Isso é possível usando o dict
construtor. Eu não quero preencher os outros espaços reservados ainda, então eu os escapo usando dois sinais de porcentagem (%%
). cursor2.execute(query, [row[3], row[0]])
Por fim, execute a consulta. Se você imprimir a consulta antes de executar, verá a string
update myTable set column_name = %s where ID = %s
.