2016-08-09 54 views
3

例如,如果我在python運行SQL查詢(使用pymssql):我可以不止一次遍歷pymssql中的遊標嗎?

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

然後我做的:

for row in cursor: 
    print row[0] 

但後來我想遍歷表的第二次不同的操作,像這樣:

for row in cursor: 
    print row[1] 

(顯然我可以在1循環中做這兩個,這僅僅是爲了舉例)。我可以在不重新執行查詢的情況下執行此操作嗎?

回答

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]) 
0

不,你不能這樣做,因爲pymssql光標(蟒蛇發電機)是文件指針幾乎相同,在遊標中的每一行是相同的文件,一旦你的每一行通過一行你必須尋求啓動並重新開始,光標的情況相同,你必須再次運行查詢來獲取數據。

相關問題