2016-08-09 5 views
3

예를 들어, 나는 파이썬에서 (사용 pymssql을)를 SQL 쿼리를 실행하는 경우 :pymssql에서 커서를 두 번 이상 반복 할 수 있습니까?

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

그럼 내가 할 :

for row in cursor: 
    print row[0] 

하지만 그때는 테이블을 통해 루프에 대한 두 번째 시간을 원하는 이 같은 다른 조작 :

for row in cursor: 
    print row[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 커서 (파이썬 발생기) 파일 포인터와 거의 동일하며, 커서의 각 행은 파일과 한 번 각 행과 동일하다고 할 수 없다 커서를 다시 시작하고 다시 시작해야하는 줄을 넘겨야합니다. 커서와 동일한 경우에는 쿼리를 다시 실행하여 데이터를 가져와야합니다.

관련 문제