使用python将特殊字符传递给mysql

时间:2016-01-21 13:22:09

标签: python mysql

我正在尝试使用python将变量从列表传递到mysql表中。我将在列表中走得太远,直到我收到关于一个特殊角色的恐怖。我正在使用的代码行是:

         new_value = "INSERT INTO favs VALUES ( null, '%s', '%s', '%s', '%s')" % (item1,item2,item3,item4).

第一项是问题,因为它有许多含有叛逆的变量。 感谢

2 个答案:

答案 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"。更好的方法是如上所述对其进行参数化;但是出于所有意图和目的,这将起作用。可接受的用法是在列名和表名上使用反引号。因此,如果有人为列密钥命名,这是一个保留关键字,则可以将其转义。