我正在尝试使用python将变量从列表传递到mysql表中。我将在列表中走得太远,直到我收到关于一个特殊角色的恐怖。我正在使用的代码行是:
new_value = "INSERT INTO favs VALUES ( null, '%s', '%s', '%s', '%s')" % (item1,item2,item3,item4).
第一项是问题,因为它有许多含有叛逆的变量。 感谢
答案 0 :(得分:2)
让数据库驱动程序担心它并参数化您的查询:
query = """
INSERT INTO
favs
VALUES
(null, %s, %s, %s, %s)
"""
cursor.execute(query, (item1, item2, item3, item4))
答案 1 :(得分:0)
除了上面的解决方案,mysql中的转义字符是反引号即。 `。
所以如果你写了这个:
SELECT * FROM my_view;
将其更改为:
new_value = "INSERT INTO favs VALUES ( null, '%s', '%s', '%s', '%s')" % (item1,item2,item3,item4)
快速" hack"。更好的方法是如上所述对其进行参数化;但是出于所有意图和目的,这将起作用。可接受的用法是在列名和表名上使用反引号。因此,如果有人为列密钥命名,这是一个保留关键字,则可以将其转义。