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

时间:2016-08-09 13:57:10

标签: python sql database

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

cursor.execute("""SELECT * FROM TABLE""")

然后我这样做:

for row in cursor:
   print row[0]

然后我想第二次在表中循环以进行不同的操作,如下所示:

for row in cursor:
    print row[1]

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

2 个答案:

答案 0 :(得分:0)

不,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])

答案 1 :(得分:0)

不,你不能这样做,因为pymssql游标(python生成器)几乎与文件指针相同,并且游标中的每一行都与文件中的每一行相同,一旦你越过一行,你必须寻求重新开始和重新开始,光标的情况相同,你必须再次运行查询以获取数据。