Ето един пример:
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]])
Актуализиране
Ето кратък коментар:
column = str(MySQLdb.escape_string(row[1]))
Винаги е добра идея да избягвате всичко, което влиза в заявка. В този случай ние динамично добавяме име на колона и следователно то трябва да бъде екранирано, преди заявката да бъде изпълнена.
query = "update myTable set %(column)s = %%s where ID = %%s" % dict(column = column)
Формирам заявката тук. Опитвам се да постигна две неща:(1) да формирам заявка с име на колона, попълнено с помощта на column
променлива, декларирана в предишния ред (2), добавят заместители, които ще бъдат попълнени от действителни параметри по време на изпълнение на заявката.
Фрагментът dict(column = column)
всъщност е друг начин за създаване на речника {'column': column}
. Това става възможно с помощта на dict
конструктор. Все още не искам да попълвам другите места, така че ги избягвам с два знака за процент (%%
).
cursor2.execute(query, [row[3], row[0]])
Накрая изпълнете заявката. Ако отпечатате заявка преди да я изпълните, ще видите низа update myTable set column_name = %s where ID = %s
.