Zde je příklad:
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]])
Aktualizovat
Zde je krátký komentář:
column = str(MySQLdb.escape_string(row[1]))
Vždy je dobré uniknout všemu, co se dostane do dotazu. V tomto případě dynamicky přidáváme název sloupce, a proto musí být před provedením dotazu escapován.
query = "update myTable set %(column)s = %%s where ID = %%s" % dict(column = column)
Dotaz tvořím zde. Snažím se dosáhnout dvou věcí:(1) vytvořte dotaz s názvem sloupce vyplněným pomocí column
proměnná deklarovaná v předchozím řádku (2) přidejte zástupné symboly, které budou vyplněny skutečnými parametry během provádění dotazu.
Úryvek dict(column = column)
je vlastně další způsob, jak vytvořit slovník {'column': column}
. To je možné pomocí diktátu
konstruktér. Nechci zatím vyplňovat ostatní zástupné symboly, takže je vynechám pomocí dvou znaků procenta (%%
).
cursor2.execute(query, [row[3], row[0]])
Nakonec proveďte dotaz. Pokud dotaz vytisknete před provedením, uvidíte řetězec update myTable set column_name = %s where ID = %s
.