Oto przykład:
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]])
Aktualizacja
Oto krótki komentarz:
column = str(MySQLdb.escape_string(row[1]))
Zawsze dobrym pomysłem jest uniknięcie wszystkiego, co wchodzi w skład zapytania. W tym przypadku dynamicznie dodajemy nazwę kolumny i dlatego należy ją zmienić przed wykonaniem zapytania.
query = "update myTable set %(column)s = %%s where ID = %%s" % dict(column = column)
Tutaj tworzę zapytanie. Próbuję osiągnąć dwie rzeczy:(1) formularz zapytania z nazwą kolumny wypełnioną przy użyciu column
zmienna zadeklarowana w poprzednim wierszu (2) dodaje symbole zastępcze, które zostaną wypełnione przez rzeczywiste parametry podczas wykonywania zapytania.
Fragment kodu dict(column = column)
jest właściwie innym sposobem tworzenia słownika {'column': column}
. Jest to możliwe dzięki dyktaturze
konstruktor. Nie chcę jeszcze wypełniać pozostałych symboli zastępczych, więc unikam ich za pomocą dwóch znaków procentowych (%%
).
cursor2.execute(query, [row[3], row[0]])
Na koniec wykonaj zapytanie. Jeśli wydrukujesz zapytanie przed wykonaniem, zobaczysz ciąg update myTable set column_name = %s where ID = %s
.