Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python MySQL에서 LIMIT·OFFSET으로 특정 행부터 원하는 개수만큼 레코드 조회하기

대부분의 경우 테이블에 있는 모든 행을 조회할 필요는 없습니다. 때로는 특정 위치(행 번호)부터 시작해 원하는 개수의 레코드만 가져와야 할 때가 있습니다. 예를 들어, 총 10개의 레코드가 있는 테이블에서 3번째 행부터 5개의 행만 조회하고 싶은 상황을 가정해 볼 수 있습니다.

이럴 때 SELECT 문과 함께 LIMIT 절과 OFFSET 절을 사용합니다. LIMIT은 가져올 행의 개수를 지정하고, OFFSET은 데이터를 가져오기 시작할 위치를 지정합니다. 주의할 점은 OFFSET이 0부터 시작한다는 것입니다. 따라서 3번째 행부터 데이터를 가져오려면 OFFSET 값은 2가 되어야 합니다.

기본 문법

SELECT * FROM table_name LIMIT 가져올_행_수 OFFSET 시작_인덱스

Python에서 MySQL로 특정 레코드를 조회하는 단계

  • mysql.connector 모듈 임포트
  • connect() 메서드로 데이터베이스 연결 설정
  • cursor() 메서드로 커서 객체 생성
  • 적절한 MySQL 구문으로 쿼리 작성
  • execute() 메서드로 SQL 쿼리 실행
  • 작업 완료 후 연결 종료

예를 들어 다음과 같은 "Students" 테이블이 있다고 가정해 보겠습니다.

+----------+---------+-----------+------------+
|    Name  |   Class |    City   |    Marks   |
+----------+---------+-----------+------------+
|    Karan |    4    | Amritsar  |     95     |
|    Sahil |    6    | Amritsar  |     93     |
|    Kriti |    3    | Batala    |     88     |
|   Khushi |    9    | Delhi     |     90     |
|    Kirat |    5    | Delhi     |     85     |
+----------+---------+-----------+------------+

예제

2번째 행부터 시작해서 3개의 행을 조회하고 싶다고 가정해 보겠습니다. 이 경우 LIMIT은 3, OFFSET은 1로 지정합니다.

import mysql.connector

db = mysql.connector.connect(
    host="your host",
    user="your username",
    password="your password",
    database="database_name"
)

cursor = db.cursor()

query = "SELECT * FROM Students LIMIT 3 OFFSET 1"
cursor.execute(query)

for row in cursor:
    print(row)

db.close()

위 코드는 2번째 행(Sahil)부터 시작하여 총 3개의 레코드를 가져와 출력합니다.

출력 결과

('Sahil', 6, 'Amritsar', 93)
('Kriti', 3, 'Batala', 88)
('Khushi', 9, 'Delhi', 90)

이처럼 LIMIT과 OFFSET을 조합하면 페이지네이션 처리나 대량 데이터 중 일부만 조회해야 하는 상황에서 매우 유용하게 활용할 수 있습니다.