>백엔드 개발 >파이썬 튜토리얼 >SQL 트랜잭션 - Python을 사용한 COMMIT, ROLLBACK 및 저장점

SQL 트랜잭션 - Python을 사용한 COMMIT, ROLLBACK 및 저장점

DDD
DDD원래의
2025-01-20 18:35:10394검색

최신 데이터베이스 개발에서 DataGrip과 같은 도구는 커밋, 롤백 또는 저장점 설정을 위한 그래픽 인터페이스를 제공하여 트랜잭션 처리를 더 쉽게 만듭니다.

이 기사에서는 SQL에서 COMMIT, ROLLBACKSAVEPOINT를 정의하고 오라클, MySQL 또는 PostgreSQL(Python)

주요 거래 개념

1. 커밋

정의: 트랜잭션을 마무리하고 모든 변경 사항을 데이터베이스에 영구적으로 적용합니다.
사용 사례: 트랜잭션의 모든 작업이 성공하면 COMMIT를 사용하여 데이터베이스에 변경 사항이 반영되도록 합니다.

2. 롤백

정의: 트랜잭션 중에 발생한 모든 변경 사항을 되돌려 데이터베이스를 이전 상태로 복원합니다.
사용 사례: ROLLBACK을 사용하여 오류를 처리하거나 실패한 트랜잭션을 실행 취소합니다.

3. 세이브포인트

정의: 트랜잭션 내에서 명명된 체크포인트를 설정하여 전체 트랜잭션을 실행 취소하지 않고 해당 지점으로 부분 롤백을 허용합니다.
사용 사례: SAVEPOINT를 사용하여 여러 단계로 복잡한 거래를 관리하고 필요할 때 선택적으로 롤백합니다.

Python 및 데이터베이스 트랜잭션

프로그래밍 방식으로 데이터베이스 작업을 할 때 Python의 데이터베이스 라이브러리(예: cx_Oracle, mysql-connector-python, psycopg2)는 트랜잭션을 명시적으로 제어하는 ​​방법을 제공합니다.

Python 거래의 일반적인 단계

  1. 트랜잭션 시작: 자동 커밋이 활성화되지 않은 한 연결과 함께 자동으로 시작됩니다.
  2. SQL 문 실행: 필요한 데이터베이스 작업을 수행합니다.
  3. 커밋 또는 롤백: 변경 사항을 완료하려면 commit()을 사용하고, 되돌리려면 Rollback()을 사용하세요.
  4. 저장점 사용: 더 세밀하게 제어하려면 지원되는 경우 저장점을 정의하고 롤백하세요.
예: Oracle 데이터베이스와의 Python 트랜잭션

연결 설정

import cx_Oracle

# Connect to Oracle Database
connection = cx_Oracle.connect("user/password@localhost/XEPDB1")
cursor = connection.cursor()

COMMIT 및 ROLLBACK 사용

try:
    # Start Transaction
    cursor.execute("UPDATE Accounts SET Balance = Balance - 100 WHERE Name = 'Alice'")
    cursor.execute("UPDATE Accounts SET Balance = Balance + 100 WHERE Name = 'Bob'")

    # Commit the transaction
    connection.commit()
    print("Transaction committed successfully!")
except Exception as e:
    # Rollback in case of error
    connection.rollback()
    print(f"Transaction failed. Rolled back changes. Error: {e}")

SAVEPOINT 사용

try:
    # Start Transaction
    cursor.execute("UPDATE Accounts SET Balance = Balance - 200 WHERE Name = 'Alice'")
    connection.commit()

    # Savepoint
    cursor.execute("SAVEPOINT Savepoint_After_Alice")

    # Add 200 to Bob (intentional error to demonstrate rollback)
    cursor.execute("UPDATE Accounts SET Balance = Balance + 200 WHERE Name = 'Unknown'")

    # Commit if successful
    connection.commit()
except Exception as e:
    # Rollback to savepoint
    cursor.execute("ROLLBACK TO Savepoint_After_Alice")
    connection.commit()
    print(f"Rolled back to savepoint. Error: {e}")
요약

이러한 개념을 익히면 실제 애플리케이션에서 데이터베이스 트랜잭션을 효율적으로 관리할 수 있습니다!


더 알아보기

luca1iu image

루카 리우

안녕! ? 저는 데이터에 관한 모든 것에 열정을 갖고 있는 비즈니스 인텔리전스 개발자 Luca입니다. Python, SQL, Power BI, Tableau, SAP 비즈니스 개체에 능숙합니다.

시간을 내어 데이터 관련 통찰력을 탐색해 주셔서 감사합니다. 참여해 주셔서 감사합니다.

? LinkedIn에서 나와 연결하세요

SQL 트랜잭션 - Python을 사용한 COMMIT, ROLLBACK 및 저장점

위 내용은 SQL 트랜잭션 - Python을 사용한 COMMIT, ROLLBACK 및 저장점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.