2010-12-06 6 views
1

메신저 데이터베이스 테이블에서 데이터를 처리하려고합니다. 이들 모두를 동시에로드하면 대부분의 컴퓨터 자원을 소모하게됩니다. Heres 내 현재 코드프로그래밍 방식으로 파이썬과 오프셋/제한 mysqldb

cursor.execute("SELECT * from sometable") 
rs = cursor.fetchall() 
. 
# process 1: set operation 
. 
for a in rs: 
    # process 2: put data in another db 

리소스 사용을 줄이는 방법이 있습니까? 루프 아래에서 행을 비트 단위로 가져 오는 것과 비슷합니까?

답변

1

cursor.fetchone()을 사용할 수 있습니다. 약 here에 대해 읽어보십시오. 사용 예제 :

cursor.execute(query) 
numrows = int(cursor.rowcount) 
for x in range(0,numrows): 
    row = cursor.fetchone() 

당신은 또한 MySQL의 쿼리에서 LIMIT를 사용하여 고려할 수 :

cursor.execute("SELECT * from sometable LIMIT 0, 100") 

마지막으로, 스타 연산자를 사용하지 만 당신이 필요로하는 열을 선택합니다.

+0

나는 그것에 대해 읽었지만, 많은 부분을 결코 알지 못했습니다. 여기에 설명과 fetchone 사용법에 대한 예제가 담긴 링크가 있습니다 : http://bytes.com/topic/python/answers/25476-nonetype-object-returned-fetchone-mysqldb – kusut

0

cursor.fetchone()을 사용하면 이전에 SELECT * 문으로 인해 여전히 리소스 문제가 발생할 수 있습니다. 이 작업을 수행하는 가장 좋은 방법은 질의 결과를 LIMIT로 제한하고 모두를 통해 반복하는 것입니다.

관련 문제