首页 > 数据库 > mysql教程 > 如何使用 pyodbc 在 Python 中安全地参数化 SQL SELECT 语句?

如何使用 pyodbc 在 Python 中安全地参数化 SQL SELECT 语句?

DDD
发布: 2025-01-03 12:58:38
原创
711 人浏览过

How to Safely Parameterize SQL SELECT Statements in Python with pyodbc?

Python 中使用 pyodbc 的参数化 Select 语句

本题讨论如何在循环中使用变量作为参数来执行 SQL SELECT 语句一个名为“吞吐量”的表。使用的具体参数因行的“DeviceName”属性而异。

初始尝试

最初,用户尝试以下代码但没有成功:

for row in cursor.execute("SELECT * FROM Throughput WHERE DeviceName=%s", %(data['DeviceName'])):
登录后复制

又一次失败的尝试是:

for row in cursor.execute("SELECT * FROM Throughput WHERE(DeviceName), values(?)", (data['DeviceName']) ):
登录后复制

最终工作代码

最终,用户使用以下代码片段成功解决了问题:

query = "SELECT * FROM Throughput WHERE DeviceName = '%s'" % data['Device Name']
try:
    for row in cursor.execute(query):
登录后复制

参数化语句

推荐的方法是使用参数化语句:

cursor.execute("SELECT * FROM Throughput WHERE DeviceName = ?", data['DeviceName'])
登录后复制

与之前的尝试相比,此方法具有多个优点:

  • 防止 SQL 注入
  • 无需使用单引号转义 where 子句值
  • SQL 准备仅发生一次,提高后续执行的性能

以上是如何使用 pyodbc 在 Python 中安全地参数化 SQL SELECT 语句?的详细内容。更多信息请关注PHP中文网其他相关文章!

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