MySQL에서는 INSERT 문을 사용해 테이블에 데이터를 삽입합니다. 데이터를 삽입할 때는 두 가지 방식 중 하나를 사용해야 합니다. 첫 번째는 테이블의 컬럼 정의 순서와 동일한 순서로 값을 전달하는 것이고, 두 번째는 컬럼 이름을 명시적으로 지정하면서 해당하는 값들을 함께 전달하는 것입니다.
마지막으로 삽입된 행의 ID를 가져와 출력하려면 lastrowid 속성을 사용합니다. 이 속성은 가장 최근에 삽입된 행의 ID를 반환하는 특수한 값입니다. 다만 이 속성을 사용하기 전에 반드시 충족해야 할 조건이 있습니다.
- ID 컬럼이 테이블의 기본 키(PRIMARY KEY)여야 합니다.
- ID 컬럼이 자동 증가(AUTO_INCREMENT)로 설정되어 있어야 합니다.
문법
cs.lastrowid
여기서 cs는 커서(cursor) 객체를 의미합니다.
파이썬에서 MySQL로 삽입된 행의 ID를 얻는 단계
- MySQL 커넥터 모듈을 임포트합니다.
connect()메서드를 사용하여 데이터베이스와 연결을 설정합니다.cursor()메서드로 커서 객체를 생성합니다.- 테이블에 행을 삽입하는 INSERT 쿼리를 작성합니다.
execute()메서드로 SQL 쿼리를 실행합니다.lastrowid를 사용하여 삽입된 행의 ID를 가져옵니다.- 연결을 종료합니다.
예시 테이블
다음과 같이 "Students"라는 이름의 테이블이 있다고 가정해 보겠습니다.
+--------+---------+-----------+------------+ | id | Name | City | Marks | +--------+---------+-----------+------------+ | 1 | Karan | Amritsar | 95 | | 2 | Sahil | Amritsar | 93 | | 3 | Kriti | Batala | 88 | | 4 | Amit | Delhi | 90 | +--------+---------+-----------+------------+
예제 코드
위 테이블에서 id 컬럼은 기본 키이며 자동 증가로 설정되어 있습니다. 새로운 행을 삽입한 후, 마지막으로 삽입된 행의 ID를 출력해 보겠습니다.
import mysql.connector
db = mysql.connector.connect(
host="your host",
user="your username",
password="your password",
database="database_name"
)
cursor = db.cursor()
# 테이블에 새로운 행 삽입
query = "INSERT INTO Students VALUES(5, 'Priya', 'Amritsar', 90)"
cursor.execute(query)
db.commit()
# 삽입된 행의 ID 출력
print(cursor.lastrowid)
db.close()실행 결과
5
위 코드에서 cursor.lastrowid는 방금 삽입된 행의 ID인 5를 반환합니다. 이처럼 lastrowid 속성을 활용하면 별도의 추가 쿼리 없이도 자동 증가된 기본 키 값을 즉시 확인할 수 있어, 관련 데이터를 다른 테이블에 연결할 때 매우 유용하게 활용됩니다.