首页  >  文章  >  后端开发  >  如何在 Python 的 MySQL IN 子句中安全地使用列表?

如何在 Python 的 MySQL IN 子句中安全地使用列表?

Linda Hamilton
Linda Hamilton原创
2024-11-19 16:04:02342浏览

How Can I Safely Use a List in a MySQL IN Clause in Python?

在 Python 的 MySQL IN 子句中安全地使用列表

在 Python 中,您可以使用 join 轻松将列表转换为字符串() 方法。然而,当在 MySQL IN 子句中使用该字符串时,避免 SQL 注入漏洞至关重要。

传统方法涉及在执行字符串之前手动引用和转义该字符串,这很容易出错。为了解决这个问题,您可以使用以下技术直接利用强大的 list_of_ids:

  1. 创建格式字符串: 使用列表中的值的占位符创建一个字符串。例如,如果 list_of_ids 有 3 个元素,则创建一个类似 ','.join(['%s'] * 3) 的字符串,这将导致“?, ?, ?”。
  2. 执行查询: 使用游标对象的execute()方法来执行查询。将格式字符串作为第一个参数传递,将 list_of_ids 作为第二个参数传递。这确保了值作为参数传递,而不是插入到查询字符串中。
format_strings = ','.join(['%s'] * len(list_of_ids))
cursor.execute("DELETE FROM foo.bar WHERE baz IN (%s)" % format_strings, tuple(list_of_ids))

通过利用这种方法,您可以安全地在 MySQL IN 子句中使用列表,而不必担心 SQL 注入。数据直接作为参数传递,无需手动引用和转义。

以上是如何在 Python 的 MySQL IN 子句中安全地使用列表?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn