[Python] PyMySQL - fetchall(), fetchone(), fetchmany()

KangHo Lee's avatar
Jun 10, 2025
[Python] PyMySQL - fetchall(), fetchone(), fetchmany()
fetchall()DB에서 조회(SELECT)한 모든 결과 행(row)을 한 번에 가져오는 함수입니다. 주로 다음과 같은 이유로 사용됩니다:

✅ 1. 모든 결과를 리스트 형태로 받고 싶을 때

cursor.execute("SELECT * FROM user") result = cursor.fetchall()
  • result[(row1), (row2), (row3), ...] 형태의 튜플 리스트가 됩니다.
  • 반복문으로 쉽게 처리 가능:
for row in result: print(row)

✅ 2. 조회 결과를 반복해서 처리할 수 있게 하기 위해

  • fetchall() 없이 바로 cursor를 쓰면 한 번만 읽히고 다시 접근 불가합니다.
  • fetchall()로 리스트로 받아두면 여러 번 재사용 가능.

✅ 3. 메모리에 다 넣고 빠르게 접근하기 위해

  • 작은 데이터는 fetchall()로 전부 가져오고, 파이썬에서 가공하거나 필터링하는 것이 빠릅니다.
  • 예: 유저 리스트, 상품 목록, 전체 게시글 등

❗주의: 데이터가 많을 땐 fetchone()이나 fetchmany(n) 추천

  • fetchall()은 결과를 한꺼번에 메모리에 로드하므로, 수천, 수만 건 이상이면 메모리 폭발 가능성이 있습니다.

🧠 요약 표:

메서드
기능
특징
fetchall()
모든 결과 가져옴
리스트로 전체 처리에 적합
fetchone()
한 줄만 가져옴
반복문으로 한 줄씩 처리 가능
fetchmany(n)
n개씩 묶어 가져옴
메모리 절약 + 반복 처리에 적합

 
Share article

devleekangho