在 Python 字符串格式中使用 SQL 通配符和 LIKE 运算符
将 SQL 通配符和 LIKE 运算符插入 Python 字符串格式可能具有挑战性。本文提供了尝试使用 MySQLdb 执行 MySQL 查询时遇到的常见错误的解决方案。
来自 MySQLdb 的错误
尝试 3 和 4 从 MySQLdb 返回错误,指示“格式字符串参数不足。”出现这种情况是因为 Python 中的字符串格式化运算符将 % 符号解释为格式说明符。
SQL 注入漏洞
显示的前四次尝试容易受到攻击SQL注入攻击。应对用户输入(例如查询变量)进行清理或转义,以防止执行恶意 SQL。
正确方法
建议的方法是使用占位符而不是字符串格式。下面是一个示例:
curs.execute("""SELECT tag.userId, count(user.id) as totalRows FROM user INNER JOIN tag ON user.id = tag.userId WHERE user.username LIKE %s""", ('%' + query + '%',))
两个参数传递给execute():
此方法确保 SQL语句有效并且可以防止 SQL 注入。
以上是如何在 Python 的 `MySQLdb` 中安全地使用 SQL 通配符以避免注入?的详细内容。更多信息请关注PHP中文网其他相关文章!