Ecco un esempio:
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]])
Aggiorna
Ecco un breve commento:
column = str(MySQLdb.escape_string(row[1]))
È sempre una buona idea sfuggire a tutto ciò che entra in una query. In questo caso stiamo aggiungendo dinamicamente un nome di colonna e quindi è necessario eseguire l'escape prima che la query venga eseguita.
query = "update myTable set %(column)s = %%s where ID = %%s" % dict(column = column)
Sto formando la domanda qui. Sto cercando di ottenere due risultati:(1) formare una query con il nome della colonna popolato utilizzando la column
la variabile dichiarata nella riga precedente (2) aggiunge i segnaposto che verranno riempiti dai parametri effettivi durante l'esecuzione della query.
Lo snippet dict(column = column)
è in realtà un altro modo per creare il dizionario {'column': column}
. Ciò è possibile utilizzando il dict
costruttore. Non voglio ancora riempire gli altri segnaposto, quindi li esco utilizzando due segni di percentuale (%%
).
cursor2.execute(query, [row[3], row[0]])
Infine esegui la query. Se stampi la query prima dell'esecuzione vedrai la stringa update myTable set column_name = %s where ID = %s
.