次に例を示します:
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]])
更新
ここに簡単な解説があります:
column = str(MySQLdb.escape_string(row[1]))
クエリに含まれるものはすべてエスケープすることをお勧めします。この場合、列名を動的に追加しているため、クエリを実行する前に列名をエスケープする必要があります。
query = "update myTable set %(column)s = %%s where ID = %%s" % dict(column = column)
ここでクエリを作成しています。私は2つのことを達成しようとしています:(1)column
を使用して列名が入力されたクエリを作成する 前の行で宣言された変数(2)は、クエリの実行中に実際のパラメーターによって入力されるプレースホルダーを追加します。
スニペットdict(column = column)
実際には、辞書を作成する別の方法です{'column': column}
。これは、dict
を使用して可能になります。 コンストラクタ。まだ他のプレースホルダーに入力したくないので、2つのパーセント記号(%%
を使用してそれらをエスケープします 。
cursor2.execute(query, [row[3], row[0]])
最後にクエリを実行します。実行する前にクエリを出力すると、文字列update myTable set column_name = %s where ID = %s
が表示されます。 。