MySQLv14.14发行版5.7.19,Linux版(x86_64)
我正在运行这样的查询:

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,))

有没有一种方法可以在不重用INSERT / ON DUPLICATE KEY UPDATE函数中的每个变量的情况下实现这一点,或者我最好使用cursor.execute()进行字符串格式化?

最佳答案

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.

关于python - 在不复制变量的情况下重用%s占位符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46206223/

10-11 04:50