Her er et eksempel:
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]])
Opdater
Her er en kort kommentar:
column = str(MySQLdb.escape_string(row[1]))
Det er altid en god idé at undslippe alt, der indgår i en forespørgsel. I dette tilfælde tilføjer vi dynamisk et kolonnenavn, og det skal derfor escapes, før forespørgslen udføres.
query = "update myTable set %(column)s = %%s where ID = %%s" % dict(column = column)
Jeg danner forespørgslen her. Jeg forsøger at opnå to ting:(1) form en forespørgsel med kolonnenavn udfyldt ved hjælp af column
variabel erklæret i den foregående linje (2) tilføjer pladsholdere, der vil blive udfyldt af faktiske parametre under udførelse af forespørgsel.
Uddraget dict(column = column)
er faktisk en anden måde at oprette ordbogen {'column': column}
på . Dette er gjort muligt ved hjælp af dict
konstruktør. Jeg vil ikke udfylde de andre pladsholdere endnu, så jeg undslipper dem ved hjælp af to procenttegn (%%
).
cursor2.execute(query, [row[3], row[0]])
Udfør endelig forespørgslen. Hvis du udskriver forespørgslen før udførelse, vil du se strengen update myTable set column_name = %s where ID = %s
.