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

파이썬 MySQL commit() 메서드 완벽 정리 – 데이터베이스 변경사항 저장하기

파이썬에서 데이터베이스 트랜잭션을 처리할 때 사용되는 여러 메서드 중 commit()은 특히 중요한 역할을 합니다. 이 글에서는 commit() 메서드가 무엇인지, 왜 필요한지, 그리고 실제 코드 예제를 통해 어떻게 활용하는지 자세히 알아보겠습니다.

commit() 메서드란?

commit() 메서드는 사용자가 데이터베이스에 수행한 변경 사항을 최종 확정(저장)하는 데 사용됩니다. UPDATE, INSERT, DELETE 등의 SQL 문으로 데이터베이스를 수정한 후에는 반드시 변경 사항을 커밋해야 합니다.

만약 데이터베이스를 수정한 후 commit() 메서드를 호출하지 않으면, 변경 사항은 실제 데이터베이스에 반영되지 않습니다. 즉, 아무리 쿼리를 성공적으로 실행했다 하더라도 커밋하지 않으면 그 결과가 영구적으로 저장되지 않습니다.

기본 문법

db.commit()

여기서 db는 데이터베이스 연결 객체(connection object)를 의미합니다.

데이터 수정 후 커밋하는 절차

파이썬과 MySQL을 연동하여 테이블의 데이터를 수정하고 변경 사항을 저장하는 전체 과정은 다음과 같습니다.

  • MySQL 커넥터(mysql.connector) 모듈을 임포트합니다.
  • connect() 메서드로 데이터베이스와 연결을 설정합니다.
  • cursor() 메서드로 커서 객체를 생성합니다.
  • 적절한 SQL 문을 사용해 쿼리를 작성합니다.
  • execute() 메서드로 SQL 쿼리를 실행합니다.
  • commit() 메서드로 변경 사항을 데이터베이스에 저장합니다.
  • 연결을 종료합니다.

예제 준비

다음과 같은 '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     |
+----------+---------+-----------+------------+

이제 Kriti의 도시를 Batala에서 Kolkata로 변경하고, 그 결과를 데이터베이스에 저장하는 예제를 살펴보겠습니다.

전체 코드 예제

import mysql.connector

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

cursor = db.cursor()

# 데이터 수정 쿼리 실행
query = "UPDATE Students SET City='Kolkata' WHERE Name='Kriti'"
cursor.execute(query)

# 변경 사항을 데이터베이스에 커밋
db.commit()

# 수정된 결과 확인
query = "SELECT * FROM Students"
cursor.execute(query)

for row in cursor:
    print(row)

db.close()

위 코드는 Kriti의 도시 이름을 Kolkata로 업데이트한 뒤, db.commit()을 통해 이 변경 사항을 데이터베이스에 영구적으로 저장합니다.

실행 결과

('Karan', 4, 'Amritsar', 95)
('Sahil', 6, 'Amritsar', 93)
('Kriti', 3, 'Kolkata', 88)
('Khushi', 9, 'Delhi', 90)
('Kirat', 5, 'Delhi', 85)

출력 결과를 보면 Kriti의 도시가 성공적으로 Kolkata로 변경된 것을 확인할 수 있습니다.

주의 사항

위 코드에서 db.commit() 부분은 매우 중요합니다. 이 메서드가 있어야 테이블에 대한 변경 사항이 실제로 저장됩니다. 만약 commit()을 호출하지 않으면, UPDATE 문이 실행되었더라도 테이블에는 어떠한 변화도 일어나지 않습니다. 따라서 데이터를 수정하는 모든 작업 후에는 반드시 commit()을 호출하는 습관을 들이는 것이 좋습니다.