2017-09-13 31 views
1

的MySQL版本14.14 DISTRIB 19年5月7日,對於Linux下(x86_64)重複使用%s佔位符而不復制變量?

我跑的INSERT/ON DUPLICATE KEY UPDATE這樣的查詢:

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作爲第二個參數。

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.