Bagaimanakah saya boleh melakukan sisipan pukal yang cekap dengan SQLAlchemy ORM?

DDD
Lepaskan: 2024-11-16 07:58:02
asal
205 orang telah melayarinya

How can I perform efficient bulk inserts with SQLAlchemy ORM?

Sisipan Pukal Menggunakan SQLAlchemy ORM

Apabila memasukkan data ke dalam pangkalan data, kecekapan adalah penting. Secara lalai, SQLAlchemy memasukkan objek individu ke dalam jadual, yang boleh mengambil masa lebih lama untuk operasi pukal.

Adakah SQLAlchemy Menyokong Sisipan Pukal?

Ya. Bermula dengan versi 1.0.0, SQLAlchemy termasuk operasi pukal. Ini membolehkan anda melakukan sisipan pukal atau kemas kini dalam satu transaksi.

Cara Melakukan Sisipan Pukal

Untuk melakukan sisipan pukal menggunakan SQLAlchemy ORM, ikut langkah berikut:

  1. Buat senarai objek yang anda mahu masukkan.
  2. Panggil kaedah bulk_save_objects() sesi anda dengan menghantar senarai objek sebagai hujah.
  3. Komitasikan sesi untuk menyelesaikan operasi sisipan.

Contohnya:

s = Session()
objects = [
    User(name="u1"),
    User(name="u2"),
    User(name="u3")
]
s.bulk_save_objects(objects)
s.commit()
Salin selepas log masuk

Meningkatkan Prestasi dengan Sesi

Secara lalai, SQLAlchemy melakukan setiap operasi dengan serta-merta. Untuk meningkatkan prestasi bagi sisipan pukal, anda boleh melumpuhkan autokomit dan komit secara manual selepas semua objek ditambahkan. Ini memastikan bahawa data dimuatkan ke dalam pangkalan data dalam satu transaksi. Walau bagaimanapun, ambil perhatian bahawa melumpuhkan autokomit mungkin membawa kepada isu ketekalan data jika ralat berlaku.

Untuk melumpuhkan autokomit, tetapkan parameter autokomit kepada Palsu semasa membuat sesi. Kemudian, lakukan sesi secara manual selepas semua objek ditambahkan:

s = Session(autocommit=False)
s.bulk_save_objects(objects)
s.commit()
Salin selepas log masuk

Dengan menggunakan operasi pukal dan mengoptimumkan penggunaan sesi, anda boleh meningkatkan prestasi aplikasi SQLAlchemy ORM anda dengan ketara untuk tugas memasukkan data pukal.

Atas ialah kandungan terperinci Bagaimanakah saya boleh melakukan sisipan pukal yang cekap dengan SQLAlchemy ORM?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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