python - 在带有 IN sql 语句的 pymssql 中使用 cursor.execute 参数

标签 python sql pymssql

我在通过 pymssql 使用带有运算符 IN 的简单 sql 语句时遇到问题。

这是一个示例:

import pymssql
conn = pymssql.connect(server='myserver', database='mydb')
cursor = conn.cursor()
req = "SELECT * FROM t1 where id in (%s)"
cursor.execute(req,  tuple(range(1,10)))
res = cursor.fetchall()

令人惊讶的是只返回了第一个 id,我不明白为什么。 有没有人遇到同样的行为?

最佳答案

您正试图将九个 ID 值传递给查询,而您只有一个占位符。通过这样做你可以获得九个占位符:

ids = range(1,10)
placeholders = ','.join('%s' for i in ids)
req = "SELECT * FROM t1 where id in ({})".format(placeholders)
cursor.execute(req, ids)
res = cursor.fetchall()

顺便说一句,您在这里不一定需要元组。一个列表就可以了。

关于python - 在带有 IN sql 语句的 pymssql 中使用 cursor.execute 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32384458/

相关文章:

python - 导入错误 : No module named _mssql

python - Adaptive Server 连接失败(DB-Lib 错误消息 20002,严重性 9)

php - 如何在mysql中选择整个星期的星期一到星期日?

java - 如何将 BIRT 与 Python 集成

python - Python 中的 Wufoo API 在特定时间后按日期时间排序不起作用

python - numpy 属性错误 : with theano module 'numpy.core.multiarray' has no attribute _get_ndarray_c_version

php - 使用连接语句和子查询的 CakePHP 查询准备

sql - 在表中保存嵌套 XML 时出现 PL/SQL 错误

python - 尝试使用 pip 在 ubuntu 12.04 上安装 pymssql

python - 在C中将Float转换为String,然后在Python中读取它