2017-09-13 7 views
1

私はこのようなINSERT/ON DUPLICATE KEY UPDATEクエリ実行しているLinux用14.14按分5.7.19、(x86_64版)変数を複製せずに%sプレースホルダを再利用しますか?

版のmysql:

query = ("INSERT INTO table SET col1 = %s, col2 = %s, col3 = %s ON DUPLICATE KEY UPDATE col2 = %s, col3 = %s") 
cursor.execute(insert_post, (var1, var2, var3, var2, var3,)) 

は、それぞれを再利用せずにこれを行う方法はあります私のcursor.execute()関数内の変数、またはformat()で文字列フォーマットを行う方がよいでしょうか?

+0

あなたはどのようなデータベースを使用していますか? – zython

答えて

3

IIUCでは、名前付きフォーマッタを使用し、dictを2番目の引数として渡します。

query = ("""INSERT INTO table 
      SET col1 = %(var1)s, 
       col2 = %(var2)s, 
       col3 = %(var3)s 
      ON DUPLICATE KEY UPDATE col2 = %(var2)s, 
            col3 = %(var3)s""") 
cursor.execute(insert_post, {'var1' : var1, 'var2' : var2, 'var3' : var3}) 

Reference.

関連する問題