例如,如果我在python中运行sql查询(使用pymssql):
cursor.execute("""SELECT * FROM TABLE""")
然后我这样做:
for row in cursor:
print row[0]
然后我想第二次在表中循环以进行不同的操作,如下所示:
for row in cursor:
print row[1]
(显然我可以在1循环中完成这两个,这只是为了举例)。我可以在不重新执行查询的情况下执行此操作吗?
答案 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生成器)几乎与文件指针相同,并且游标中的每一行都与文件中的每一行相同,一旦你越过一行,你必须寻求重新开始和重新开始,光标的情况相同,你必须再次运行查询以获取数据。