2013-03-20 2 views
0

은 내가 각 행을 처리 한 후, 그것을 변경, 파이썬에서 MySQL의 행의 무리를 반복하고 싶은 :mySQL 쿼리 결과의 행을 어떻게 변경합니까?

cursor.execute("SELECT someNonUniqueColumn,hasBeenProccessed 
       FROM myTable WHERE hasBeenProcessed = 0") 
for row in cursor: 
    # use someNonUniqueColumn for something... 
    ... 
    # set "hasBeenProccessed" to 1 

내가의 추함 피하기 위해 싶습니다 을 - 다른 SQL 쿼리를 실행하는 데 레코드를 처리 할 때마다 또는 - 처리 할 때 행 ID가 배열로 채우기 (둘 다 고유 한 키를 테이블에 추가해야 함)

"내가 갈 때 이것들을 확인해"?

답변

1

아니요, 진행 중 행을 변경할 수있는 방법이 없습니다. 여기에는 여러 가지 이유가 있습니다. 그 중 하나는 쿼리에 의해 반환 된 값이 카운트, 합계 및 기타 집계 함수를 생각할 수 없다는 것입니다.

매우 적은 양의 데이터베이스 상호 작용 만하는 경우 ID를 저장하고 화합물 update 문을 발행하는 것이 가장 좋습니다.

프로그램에서 1-2 개 이상의 쿼리를 발행하는 경우 자신에게 유리하게 SQLAlchemy 또는 Django ORM을 배우십시오. 둘 다 완전히 투명하지는 않지만 엄청난 시간과 디버깅 통증을 줄여줍니다.

0

왜 변경을 한 후이 과정 :

+0

의 가능한 경우 처리/

UPDATE myTable SET hasBeenProcessed = 1 WHERE hasBeenProcessed = 0 

를 쿼리를 실행하지만 다른 코드가 hasBeenProcessed'로 더 행을 추가 한 경우는 불행한 것 없다 '이 코드는 원래의 쿼리를 만들었 기 때문에 0입니다 ... 데이터베이스는 다중 사용자임을 기억하십시오. – holdenweb