MySQLDbライブラリでexecutemany
を使用するマルチクエリを実行しようとしています。周りに検索した後、私は私がexecutemany
python-mysqlで変数のリストを取り込むクエリコマンドを作成することは可能ですか?
すべてが今のところ良いですが、使用するためにはON DUPLICATE KEY
代わりのUPDATE
とともにINSERT INTO
を使用するコマンドを作成する必要がありますことを発見し、私は問題に実行している私ができます」 SET
の部分を効率的に設定します。私のテーブルは約20列あります(テーブルの肥満を批判したいかどうかはあなた次第です)。私は可能な限り効率的にコマンドストリングを形成したいと思います。
今私はall_columns
は、すべての列をカバーし、私は後でexecutemany
を使用するつもりだとしてヴァルスが%s
の束をカバー
update_query = """
INSERT INTO `my_table`
({all_columns}) VALUES({vals})
ON DUPLICATE KEY SET <should-have-each-individual-column-set-to-value-here>
""".format(all_columns=all_columns, vals=vals)
を持っています。
しかし、私はどのように文字列のSET
部分を形成するか分かりません。コンマ分割を使ってリスト内の要素に分割することを考えましたが、反復できるかどうかはわかりません。
全体的に、この目標は更新のために一度だけdbを呼び出すことです。これが私が今考えている唯一の方法です。もっと良いアイデアがある場合は、私にも知らせてください。
EDIT:追加の詳細情報
all_columns
は今ちょうど4
まずはお返事ありがとうございます。質問: '.executemany(update_query、data)'を実行すると、 'data'はすべての値のタプルのリストです。このクエリはまだ動作しますか? – JChao
私は別の記事で、コマンドの 'SET'部分が' UPDATE id2 = VALUES(id2) 'となることに気付きました。タプルの最初の要素を '' id2''に設定し、次に '' VALUES(id2)'''を設定するとどうなりますか? – JChao
はい、動作します!どうもありがとう! – JChao