在pyodbc
中,cursor.rowcount
在使用cursor.execute()
时效果很好。但是,使用-1
时,它始终返回cursor.executemany()
。
如何获得cursor.executemany()
的正确行数?
这适用于多次插入,更新和删除。
答案 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))
我希望我能帮到你。
我在回答之前测试了代码,我相信它适用于您正在处理的代码或用于学习目的。