Ini contohnya:
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]])
Perbarui
Berikut adalah komentar singkatnya:
column = str(MySQLdb.escape_string(row[1]))
Selalu merupakan ide bagus untuk menghindari apa pun yang masuk ke kueri. Dalam hal ini kami menambahkan nama kolom secara dinamis dan karenanya harus di-escape sebelum kueri dieksekusi.
query = "update myTable set %(column)s = %%s where ID = %%s" % dict(column = column)
Saya membentuk kueri di sini. Saya mencoba mencapai dua hal:(1) membentuk kueri dengan nama kolom yang diisi menggunakan column
variabel yang dideklarasikan pada baris sebelumnya (2) tambahkan placeholder yang akan diisi oleh parameter aktual selama eksekusi kueri.
Cuplikan dict(column = column)
sebenarnya adalah cara lain untuk membuat kamus {'column': column}
. Ini dimungkinkan menggunakan dict
konstruktor. Saya belum ingin mengisi tempat penampung lain, jadi saya menghindarinya menggunakan dua tanda persentase (%%
).
cursor2.execute(query, [row[3], row[0]])
Akhirnya jalankan kueri. Jika Anda mencetak kueri sebelum mengeksekusi, Anda akan melihat string update myTable set column_name = %s where ID = %s
.