Rumah > pembangunan bahagian belakang > Tutorial Python > Transaksi SQL - COMMIT, ROLLBACK dan Savepoints dengan Python

Transaksi SQL - COMMIT, ROLLBACK dan Savepoints dengan Python

DDD
Lepaskan: 2025-01-20 18:35:10
asal
387 orang telah melayarinya

Dalam pembangunan pangkalan data moden, alatan seperti DataGrip menjadikan pengendalian transaksi lebih mudah dengan menyediakan antara muka grafik untuk melakukan, memutar balik atau menetapkan titik simpanan.

Dalam artikel ini, kami akan mentakrifkan COMMIT, ROLLBACK dan SAVEPOINT dalam SQL dan menunjukkan cara melaksanakan kawalan transaksi ini apabila bekerja dengan Oracle, MySQL, atau PostgreSQL dalam Python.

Konsep Transaksi Utama

1. KOMITED

Definisi: Memuktamadkan transaksi, menjadikan semua perubahan kekal dalam pangkalan data.
Kes Penggunaan: Gunakan COMMIT apabila semua operasi dalam transaksi berjaya, memastikan pangkalan data mencerminkan perubahan.

2. KEMBALI

Definisi: Mengembalikan semua perubahan yang dibuat semasa transaksi, memulihkan pangkalan data kepada keadaan sebelumnya.
Kes Penggunaan: Gunakan ROLLBACK untuk mengendalikan ralat atau buat asal transaksi yang gagal.

3. SAVEPOINT

Definisi: Menetapkan pusat pemeriksaan bernama dalam urus niaga, membenarkan pemulangan separa ke titik itu tanpa membuat asal keseluruhan transaksi.
Kes Penggunaan: Gunakan SAVEPOINT untuk mengurus urus niaga yang kompleks dengan berbilang langkah, berguling semula secara terpilih apabila diperlukan.

Python dan Transaksi Pangkalan Data

Apabila bekerja dengan pangkalan data secara pengaturcaraan, perpustakaan pangkalan data Python (cth., cx_Oracle, mysql-connector-python, psycopg2) menyediakan kaedah untuk mengawal transaksi secara eksplisit.

Langkah Biasa untuk Transaksi dalam Python

  1. Mulakan Transaksi: Secara automatik bermula dengan sambungan melainkan autokomit didayakan.
  2. Melaksanakan Pernyataan SQL: Lakukan operasi pangkalan data yang diperlukan.
  3. Komit atau Balikkan: Gunakan commit() untuk memuktamadkan perubahan atau rollback() untuk mengembalikannya.
  4. Gunakan Savepoints: Untuk kawalan yang lebih halus, tentukan dan putar balik ke savepoints jika disokong.

Contoh: Transaksi Python dengan Pangkalan Data Oracle

Sediakan Sambungan

import cx_Oracle

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

Menggunakan COMMIT dan 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}")
Salin selepas log masuk

Menggunakan 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}")
Salin selepas log masuk

Ringkasan

Menguasai konsep ini membolehkan anda mengurus transaksi pangkalan data dengan cekap dalam aplikasi dunia sebenar!


Terokai lebih banyak lagi

luca1iu image

Luca Liu

hello! ? Saya Luca, Pembangun Perisikan Perniagaan dengan minat untuk semua perkara data. Mahir dalam Python, SQL, Power BI, Tableau, Objek Perniagaan SAP.

Terima kasih kerana meluangkan masa untuk meneroka cerapan berkaitan data dengan saya. Saya menghargai pertunangan anda.

? Berhubung dengan saya di LinkedIn

Transaksi SQL - COMMIT, ROLLBACK dan Savepoints dengan Python

Atas ialah kandungan terperinci Transaksi SQL - COMMIT, ROLLBACK dan Savepoints dengan Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan