pyodbc-如何使用变量作为参数执行选择语句[重复]
- 2025-04-10 09:46:00
- admin 原创
- 15
问题描述:
我正在尝试遍历名为 Throughput 的表中的所有行,但对于特定的 DeviceName (我已将其存储在数据 ['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']) ):
EDIT2:我的最终工作代码片段:
query = "SELECT * FROM Throughput WHERE DeviceName = '%s'" % data['Device Name']
try:
for row in cursor.execute(query):
解决方案 1:
您还可以参数化语句:
...
cursor.execute("SELECT * FROM Throughput WHERE DeviceName = ?", data['DeviceName'])
...
这是一种更好的方法,原因如下:
防止 SQL 注入(无论使用参数化 SQL 还是动态 SQL,都应始终验证用户输入)
您不必担心用单引号转义 where 子句值,因为参数是单独传递给数据库的
SQL 只需准备一次,后续执行的查询将使用准备好的语句,而不必重新编译
解决方案 2:
我不知道我的问题是否与您的类似,但我的问题是因为我编写了一个类似的查询WHERE date > ?" "OR date NOT LIKE '9%'
,但我忘记在第一行末尾或第二行末尾放置一个简单的空格(“ ”)。最后我通过这样做解决了这个问题。最终的代码如下所示:
WHERE date > ? "
"OR date NOT LIKE '9%'
注意:请注意第一行末尾的最后一个“ ”。
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD