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

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

DDD
DDD原创
2025-01-03 12:58:38709浏览

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