首页 > 数据库 > mysql教程 > 如何在 Python 中安全地执行动态参数化 SQL 查询?

如何在 Python 中安全地执行动态参数化 SQL 查询?

Susan Sarandon
发布: 2025-01-12 06:58:43
原创
464 人浏览过

How Can I Safely Execute Dynamic Parameterized SQL Queries in Python?

Python 中使用参数化执行动态 SQL 查询

在 Python 中,参数化 SQL 查询用于防止 SQL 注入漏洞。推荐的方法是使用 cursor.execute() 方法,分别传递查询和参数。但是,有时希望将查询存储在变量中以便稍后执行。

使用参数化变量进行查询

要使用变量执行参数化 SQL 查询,我们需要将变量解包到 cursor.execute() 调用中。cursor.execute() 方法最多接受三个参数:查询、可选参数和可选的命名参数字典。

使用 *(星号)解包变量

一种方法是使用星号 (*) 运算符解包变量,该运算符将元组扩展为单个参数。但是,这要求我们将查询和参数分成两个单独的列表或元组。

<code class="language-python">sql_and_params = ("INSERT INTO table VALUES (%s, %s, %s)", var1, var2, var3)
cursor.execute(*sql_and_params)</code>
登录后复制

手动解包变量

或者,我们可以手动将变量解包到正确的参数中。这允许我们对查询和参数使用单个变量。

<code class="language-python">sql = "INSERT INTO table VALUES (%s, %s, %s)"
args = (var1, var2, var3)
cursor.execute(sql, args)</code>
登录后复制

显式变量的优点

对查询和参数使用单独的变量使代码更易读和易于维护。它还允许我们轻松修改运行时的查询或参数,而无需重新创建变量。

因此,虽然可以将参数化 SQL 查询存储在变量中,但通常更倾向于将查询和参数分成显式变量,以提高可读性和灵活性。

以上是如何在 Python 中安全地执行动态参数化 SQL 查询?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板