2010-01-04 4 views
1

저는 MySQLdb 라이브러리를 사용하여 파이썬 스크립트 내에서 MySQL에 연결하고 있습니다.파이썬을 사용하여 MySQL의 마지막 레코드로 커서를 옮기는 방법은 무엇입니까?

(Ref : http://mysql-python.sourceforge.net/MySQLdb.html).

파이썬을 사용하여 결과 집합의 마지막 레코드로 건너 뛰는 방법이 있는지 배우고 싶습니다.
즉, 커서를 결과 집합의 마지막 레코드로 이동하고 싶습니다.

+1

많은 사람들이이 질문을 이해하지 못하는 것 같지만 이것은 SQL에서'커서'를 아는 사람들에게는 완전히 유효한 관심사입니다. 불행히도 파이썬에서'cursor' 구현의 대부분은 클라이언트 측 커서 (일명 가짜 커서)입니다. 그것은'DECURARE CURSOR'를 발행하지 않기 때문에'MOVE '를 지원하지 않습니다. 내가 아는 유일한 서버 측 구현은 PostgreSQL을위한'psycopg2'의 명명 된 커서입니다. –

답변

1

음, 질문이 이상합니다. 왜 그걸하고 싶니?

커서가 마지막이 될 때까지 계속 커서를 읽을 수 있습니다. 그러나 당신은 그것을 읽으면서 그것을 마지막으로 알고 있다는 것을 알기 위해 과거를 읽어야합니다, 당신은 그것을 읽기 전에 알 수 없습니다.

또 다른 아이디어는 역방향 쿼리를 만드는 것입니다. 결과 순서를 바꾸려면 ORDER BY을 사용하고 마지막 순서가 먼저옵니다. 또는 OFFSET을 사용하여 마지막 레코드 만 반환 할 수 있습니다. 번호를 알아 내기 위해 먼저 COUNT 쿼리를 발행 한 다음 OFFSET에이 번호를 사용할 수 있습니다. 쿼리는 DB에 너무 열심히하지 느낌, 그리고 시스템에 충분한 메모리가있는 경우

+0

그리고'LIMIT'을 사용하는 것을 잊지 마세요. 그래서 당신은 전체 테이블이 아닌 관심있는 레코드만을 가져올 수 있습니다. –

+0

처음 두 솔루션은 대형 데이터베이스에서 효율적이지 않을 것이라고 생각합니다. 세 번째 솔루션 (OFFSET)은 흥미 롭습니다. 파이썬의 MySQL API가 afterLast(), beforeFirst()와 같은 함수를 제공하지 않았기 때문에 아마 다른 프로그래밍 언어에서 흔히 볼 수있는 것입니다. – Haluk

0

, 당신은 목록에서 결과 집합을 저장하고, 단지 목록에서 마지막 개체를 잡아 수 :

import MySQLdb 
conn = MySQLdb.connect(host='',user='',passwd='') 
curs = conn.cursor() 
curs.execute('show databases') # or whatever query 
last_result = [x[0] for x in curs.fetchall()][-1] 
0

curs.execute ("SELECT ghfhgf")

레코드 수와 함께 int를 반환합니다.

() "hgffg 선택"(curs.execute)

curs.scroll (x)는 그래서

curs.scroll

단계를 다른 X 하나 개의 기록에서 이동하려면 당신을 위해 일할 수 있습니다.

관련 문제