fetchone() 메서드란?
fetchone() 메서드는 MySQL 테이블에서 첫 번째 행(row) 하나만 가져오고 싶을 때 사용하는 메서드입니다. 이 메서드는 쿼리 결과 중 맨 앞에 있는 단 한 개의 행만 반환하며, 더 이상 남은 행이 없으면 None을 반환합니다.
fetchone() 메서드의 동작 원리
fetchone()은 커서 객체에 직접 실행되는 쿼리가 아니라는 점에 유의해야 합니다. 실제로 데이터베이스에 전달되는 쿼리는 모든 행을 가져오는 SELECT *입니다. 그 후, SELECT * 쿼리가 반환한 결과 집합(result set)에 대해 fetchone() 메서드를 호출하면, 해당 결과에서 첫 번째 행만 추출하여 반환합니다.
MySQL에서 첫 번째 행을 가져오는 절차
Python에서 MySQL 테이블의 첫 번째 행을 조회하려면 다음 순서대로 진행합니다.
- mysql.connector 모듈을 임포트한다
connect()메서드를 사용해 데이터베이스와 연결을 설정한다cursor()메서드로 커서 객체를 생성한다SELECT *문을 사용해 쿼리를 작성한다execute()메서드로 SQL 쿼리를 실행한다SELECT *쿼리가 반환한 결과에 대해fetchone()메서드를 호출한다- 작업이 끝나면 연결을 닫는다
예시 테이블
예를 들어, 'MyTable'이라는 이름의 테이블이 있고 여기서 첫 번째 행만 가져오고 싶다고 가정해 보겠습니다.
+----------+---------+-----------+------------+ | Name | Class | City | Marks | +----------+---------+-----------+------------+ | Karan | 4 | Amritsar | 95 | | Sahil | 6 | Amritsar | 93 | | Kriti | 3 | Batala | 88 | | Khushi | 9 | Delhi | 90 | | Kirat | 5 | Delhi | 85 | +----------+---------+-----------+------------+
코드 예제
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 MyTable" cursor.execute(query) # 커서 객체에는 쿼리가 반환한 모든 행이 들어 있음 # fetchone() 메서드로 첫 번째 행만 가져옴 first_row = cursor.fetchone() print(first_row)
위 코드는 테이블에서 첫 번째 행을 가져와 출력합니다. 참고로 실무에서는 작업 종료 후 db.close()를 호출해 연결을 명시적으로 닫아주는 것이 좋습니다.
실행 결과
('Karan', 4, 'Amritsar', 95)출력 결과를 보면 테이블의 다섯 개 행 중 첫 번째 행인 Karan의 데이터만 튜플(tuple) 형태로 반환된 것을 확인할 수 있습니다. 만약 나머지 행들도 순서대로 가져오고 싶다면 fetchall() 또는 fetchmany(n) 메서드를 사용하면 됩니다.