我可以多次迭代 pymssql 中的游标吗?

Ram*_*tan 6 python sql database

例如,如果我在 python 中运行 sql 查询(使用 pymssql):

cursor.execute("""SELECT * FROM TABLE""")
Run Code Online (Sandbox Code Playgroud)

然后我这样做:

for row in cursor:
   print row[0]
Run Code Online (Sandbox Code Playgroud)

但后来我想第二次循环遍历表以进行不同的操作,如下所示:

for row in cursor:
    print row[1]
Run Code Online (Sandbox Code Playgroud)

(显然我可以在 1 个循环中完成这两个操作,这只是为了举例)。我可以在不重新执行查询的情况下执行此操作吗?

Mor*_*app 5

不,pymssql 中的游标功能就像生成器。一旦您从它们中获取结果,它们就不再包含结果集。

执行此操作的唯一方法是将查询结果保存到中间列表中。

例如:

import pymssql
database = pymssql.connect()
db_cursor = database.cursor()
db_cursor.execute("""SELECT * FROM Table""")
results = db_cursor.fetchall()
for result in results:
    print(result[0])
for result in results:
    print(result[1])
Run Code Online (Sandbox Code Playgroud)