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

Python에서 MySQL 데이터베이스에 INSERT 후 자동 생성된 ID 가져오는 방법

개요

MySQL 데이터베이스에 새 레코드를 INSERT한 후, 자동으로 생성된 ID(AUTO_INCREMENT 값)를 바로 확인해야 하는 경우가 자주 있습니다. 이 글에서는 Python의 pymysql 라이브러리를 사용해 레코드 삽입 직후의 ID를 손쉽게 가져오는 방법을 단계별로 살펴봅니다.

사전 준비 사항

시작하기 전에 아래 환경이 갖춰져 있어야 합니다.

  • MySQL 8.0.12 이상 설치
  • Python 3.6.3(32비트) 이상 설치
  • pip 명령어를 통해 pymysql 설치

pymysql 설치하기

터미널 또는 명령 프롬프트에서 다음 pip 명령어를 실행하여 pymysql을 설치합니다.

pip install pymysql

예제 데이터베이스 구성

이 예제에서는 데이터베이스 이름이 'business', 테이블 이름은 'student'입니다. 테이블에는 이미 세 개의 레코드가 저장되어 있으며, 마지막 레코드의 ID는 3입니다.

먼저 현재 테이블 상태를 확인하는 쿼리는 다음과 같습니다.

mysql> select * from student;

실행 결과는 아래와 같습니다.

+------+-------+
| id   | Name   |
+------+-------+
|    1 | John  |
|    2 | Bob   |
|    3 | Smith |
+------+-------+
3 rows in set (0.00 sec)

Python 코드로 INSERT 후 ID 얻기

같은 데이터베이스('business')와 테이블('student')을 대상으로 Python에서 레코드를 삽입하고, 커서(cursor) 객체의 lastrowid 속성을 사용하면 방금 삽입된 레코드의 ID를 즉시 확인할 수 있습니다.

import pymysql

# 데이터베이스 연결
conn = pymysql.connect(
    host='localhost',
    user='root',
    password='your_password',
    database='business'
)

try:
    with conn.cursor() as cursor:
        # 새 레코드 삽입
        sql = "INSERT INTO student (Name) VALUES (%s)"
        cursor.execute(sql, ('David',))
        conn.commit()

        # 방금 삽입된 레코드의 ID 가져오기
        inserted_id = cursor.lastrowid
        print("삽입된 레코드의 ID:", inserted_id)
finally:
    conn.close()

위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

삽입된 레코드의 ID: 4

핵심 포인트 정리

  • cursor.lastrowid: 가장 최근에 실행된 INSERT 문에서 자동 생성된 ID를 반환합니다. 별도의 추가 쿼리 없이 즉시 확인할 수 있어 가장 간편한 방법입니다.
  • SELECT LAST_INSERT_ID(): 대안으로, 연결 단위로 마지막에 생성된 ID를 조회하는 SQL 함수를 직접 실행할 수도 있습니다.
  • commit() 호출 필수: INSERT 실행 후 반드시 commit()을 호출해야 변경 사항이 데이터베이스에 반영됩니다.

이처럼 pymysql의 lastrowid 속성만 활용하면, MySQL에 데이터를 삽입한 직후 자동 생성된 ID를 별도의 조회 과정 없이 간단하게 얻을 수 있습니다.