重复使用%s占位符而不重复变量?

时间:2017-09-13 20:21:56

标签: python mysql python-3.x string-formatting

mysql Ver 14.14 Distrib 5.7.19,适用于Linux(x86_64)

我正在运行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()进行字符串格式化?

1 个答案:

答案 0 :(得分:2)

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.