【发布时间】:2015-11-29 19:25:44
【问题描述】:
我在通过 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 被返回,我不知道为什么。 有没有人遇到同样的行为?
【问题讨论】:
-
从未使用过pymssql,但对于SQLite,这需要使用
cursor.executemany() -
我试过了,它返回对应于我的元组最后一个元素的数据。
-
因为我不是 100% 确定,所以我还不会发布作为答案。看起来你只是通过
SELECT * FROM t1 where id in (1)。你用元组调用execute,但字符串只有一个格式化程序,我知道这是元组的方式,但也许 pymsql 对它的解释不同 -
@Alex 如果 cursor.executemany() 返回最后一个元素并且 cursor.execute() 返回第一个元素,这意味着它一次查询一个值。您可以尝试连接元组并将其作为字符串传递