저는 MySQLdb 라이브러리를 사용하여 파이썬 스크립트 내에서 MySQL에 연결하고 있습니다.파이썬을 사용하여 MySQL의 마지막 레코드로 커서를 옮기는 방법은 무엇입니까?
(Ref : http://mysql-python.sourceforge.net/MySQLdb.html).
파이썬을 사용하여 결과 집합의 마지막 레코드로 건너 뛰는 방법이 있는지 배우고 싶습니다.
즉, 커서를 결과 집합의 마지막 레코드로 이동하고 싶습니다.
저는 MySQLdb 라이브러리를 사용하여 파이썬 스크립트 내에서 MySQL에 연결하고 있습니다.파이썬을 사용하여 MySQL의 마지막 레코드로 커서를 옮기는 방법은 무엇입니까?
(Ref : http://mysql-python.sourceforge.net/MySQLdb.html).
파이썬을 사용하여 결과 집합의 마지막 레코드로 건너 뛰는 방법이 있는지 배우고 싶습니다.
즉, 커서를 결과 집합의 마지막 레코드로 이동하고 싶습니다.
음, 질문이 이상합니다. 왜 그걸하고 싶니?
커서가 마지막이 될 때까지 계속 커서를 읽을 수 있습니다. 그러나 당신은 그것을 읽으면서 그것을 마지막으로 알고 있다는 것을 알기 위해 과거를 읽어야합니다, 당신은 그것을 읽기 전에 알 수 없습니다.
또 다른 아이디어는 역방향 쿼리를 만드는 것입니다. 결과 순서를 바꾸려면 ORDER BY
을 사용하고 마지막 순서가 먼저옵니다. 또는 OFFSET
을 사용하여 마지막 레코드 만 반환 할 수 있습니다. 번호를 알아 내기 위해 먼저 COUNT
쿼리를 발행 한 다음 OFFSET
에이 번호를 사용할 수 있습니다. 쿼리는 DB에 너무 열심히하지 느낌, 그리고 시스템에 충분한 메모리가있는 경우
그리고'LIMIT'을 사용하는 것을 잊지 마세요. 그래서 당신은 전체 테이블이 아닌 관심있는 레코드만을 가져올 수 있습니다. –
처음 두 솔루션은 대형 데이터베이스에서 효율적이지 않을 것이라고 생각합니다. 세 번째 솔루션 (OFFSET)은 흥미 롭습니다. 파이썬의 MySQL API가 afterLast(), beforeFirst()와 같은 함수를 제공하지 않았기 때문에 아마 다른 프로그래밍 언어에서 흔히 볼 수있는 것입니다. – Haluk
, 당신은 목록에서 결과 집합을 저장하고, 단지 목록에서 마지막 개체를 잡아 수 :
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]
curs.execute ("SELECT ghfhgf")
레코드 수와 함께 int를 반환합니다.
는() "hgffg 선택"(curs.execute)
curs.scroll (x)는 그래서
curs.scroll
단계를 다른 X 하나 개의 기록에서 이동하려면 당신을 위해 일할 수 있습니다.
많은 사람들이이 질문을 이해하지 못하는 것 같지만 이것은 SQL에서'커서'를 아는 사람들에게는 완전히 유효한 관심사입니다. 불행히도 파이썬에서'cursor' 구현의 대부분은 클라이언트 측 커서 (일명 가짜 커서)입니다. 그것은'DECURARE CURSOR'를 발행하지 않기 때문에'MOVE '를 지원하지 않습니다. 내가 아는 유일한 서버 측 구현은 PostgreSQL을위한'psycopg2'의 명명 된 커서입니다. –