2017-09-13 32 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.