Här är ett exempel:
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]])
Uppdatera
Här är en kort kommentar:
column = str(MySQLdb.escape_string(row[1]))
Alltid en bra idé att undvika allt som ingår i en fråga. I det här fallet lägger vi dynamiskt till ett kolumnnamn och därför måste det escapes innan frågan exekveras.
query = "update myTable set %(column)s = %%s where ID = %%s" % dict(column = column)
Jag formar frågan här. Jag försöker uppnå två saker:(1) skapa en fråga med kolumnnamnet ifyllt med column
variabel som deklarerats på föregående rad (2) lägg till platshållare som kommer att fyllas i av faktiska parametrar under exekveringen av frågan.
Kodavsnittet dict(column = column)
är faktiskt ett annat sätt att skapa ordboken {'column': column}
. Detta görs möjligt med hjälp av dict
konstruktör. Jag vill inte fylla i de andra platshållarna ännu så jag undviker dem med två procenttecken (%%
).
cursor2.execute(query, [row[3], row[0]])
Kör slutligen frågan. Om du skriver ut frågan innan den körs kommer du att se strängen update myTable set column_name = %s where ID = %s
.