使用MySQLdb进行INSERT时如何保护文本

时间:2010-07-22 17:06:35

标签: python mysql

此查询很简单,但是当文本包含一些引号时,它不起作用。

cursor.execute ("INSERT INTO text (text_key, language_id, text) VALUES ('%s', '%s', '%s')" % (key, language_id, text))

保护文字变量的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

您正在做的事情将导致SQL注入漏洞。将参数化查询作为第一个参数传递,将值序列作为第二个参数传递。

答案 1 :(得分:2)

始终将参数与查询分开传递:

cursor.execute (
    "INSERT INTO text (text_key, language_id, text) VALUES (%s, %s, %s)",
    (key, language_id, text))

这样就可以正确处理引用。