Django memberi kita beberapa cara untuk mengontrol bagaimana transaksi basis data dikelola. Setiap permintaan langsung ter commit ke database kecuali jika transaksi aktif karena Django dijalankan dalam mode commit otomatis.

Transaksi adalah kumpulan atom dari permintaan basis data. Fungsi-fungsi ini mengambil argumen yang disediakan database. Jika tidak disediakan, Django menggunakan basis data “default“. Django akan menolak untuk melakukan commit atau melakukan rollback ketika blok atom () aktif karena hal ini bisa merusak atomicity transaksi yang sedang berjalan.

Django menyediakan API tunggal untuk mengontrol transaksi basis data. Atomicity adalah properti yang menentukan transaksi basis data, atomic memungkinkan kita untuk membuat blok kode.

Ketika commit otomatis dihidupkan dan tidak ada transaksi yang aktif, setiap permintaan SQL akan dibungkus dengan transaksi sendiri. Dengan kata lain, tidak hanya setiap permintaan untuk memulai transaksi, tetapi transaksi juga secara otomatis tercommit atau dibatalkan, tergantung pada apakah permintaan berhasil atau tidak.

Django secara default menjalankan mode autocommit. Django menggunakan savepoint secara otomatis untuk menjamin integritas operasi ORM yang memerlukan banyak query, terutama delete () dan update () queries. Django juga membungkus setiap TestCase dalam transaksi karena alasan kinerja.

penggunaan atomic transaction pada django perlu melakukan import library transaction

from django.db import transaction
from django.db import transaction
with transaction.atomic():
       account = (
           cls.objects
           .select_for_update()
           .get(id=id)
       )
 
       if account.balance < amount:
           raise errors.InsufficentFunds()
       account.balance -= amount
       account.save()
Baca artikel lainya :