使用pyodbc cursor.executemany()时如何获得正确的行数

时间:2016-01-05 14:20:43

标签: python sql pyodbc

pyodbc中,cursor.rowcount在使用cursor.execute()时效果很好。但是,使用-1时,它始终返回cursor.executemany()

如何获得cursor.executemany()的正确行数?

这适用于多次插入,更新和删除。

2 个答案:

答案 0 :(得分:1)

你不能,只有最后一个查询行计数是从executemany返回的,至少在pyodbc代码文档中是这样说的。 -1通常表示查询问题。 如果你绝对需要rowcount,你需要在循环中使用cursor.execute或者为pyodbc库编写补丁。

答案 1 :(得分:1)

我相信你可以先做另一个数据库查询,避免Pyodbc的这个问题,然后计算行数。

在实际所需的查询光标之前创建另一个光标,例如“cursor0”。然后你创建一个SELECT COUNT(*)FROM desiredTable WHERE desiredConditions。

我认为如果你能看到一些代码会更容易。

cursor = cnxn.cursor()
cursor2 = cnxn.cursor()

cursor.execute("SELECT COUNT(*) FROM myTable")
row = cursor.fetchone()
print (str(row[0]))

cursor2.execute("SELECT * FROM myTable")
row = cursor2.fetchone()
while row:
    print(str(row))

我希望我能帮到你。

我在回答之前测试了代码,我相信它适用于您正在处理的代码或用于学习目的。