Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyertai Berbilang Jadual dengan Cekap dalam Pertanyaan SQLAlchemy Tunggal?

Bagaimana untuk Menyertai Berbilang Jadual dengan Cekap dalam Pertanyaan SQLAlchemy Tunggal?

Susan Sarandon
Susan Sarandonasal
2025-01-05 01:46:39355semak imbas

How to Efficiently Join Multiple Tables in a Single SQLAlchemy Query?

SQLAlchemy: Menyertai Berbilang Jadual dalam Satu Pertanyaan

Dalam SQLAlchemy, menyertai berbilang jadual adalah penting untuk mendapatkan semula data yang kompleks. Pertimbangkan senario berikut di mana anda mempunyai tiga kelas yang dipetakan: Pengguna, Dokumen dan DocumentPermissions. Objektifnya adalah untuk mendapatkan semula jadual tersuai yang menggabungkan jadual ini berdasarkan keadaan tertentu, serupa dengan yang berikut:

email | name | document_name | document_readAllowed | document_writeAllowed

Pendekatan Awal dan Hadnya

Permulaan percubaan untuk menyertai jadual menggunakan pertanyaan berikut mungkin tidak menghasilkan yang diingini hasil:

result = session.query(User, Document, DocumentPermission).filter_by(email = "[email protected]").all()

Pertanyaan Dipertingkat menggunakan Jadual Perantaraan

Untuk menggabungkan jadual dengan berkesan, adalah perlu untuk menggunakan jadual perantaraan yang menyambungkan kunci utama satu jadual ke kunci asing yang lain. Dalam kes ini, Document bersambung kepada Pengguna melalui lajur pengarang dan DocumentsPermissions bersambung ke Documents melalui lajur dokumen.

Pertanyaan yang dipertingkatkan memanfaatkan jadual perantaraan untuk mewujudkan hubungan antara jadual:

q = Session.query(
         User, Document, DocumentPermissions,
    ).filter(
         User.email == Document.author,
    ).filter(
         Document.name == DocumentPermissions.document,
    ).filter(
        User.email == 'someemail',
    ).all()

Dengan mengikuti langkah-langkah ini, anda boleh menyertai berbilang jadual dengan cekap dalam satu pertanyaan SQLAlchemy dan mendapatkan semula yang dikehendaki data.

Atas ialah kandungan terperinci Bagaimana untuk Menyertai Berbilang Jadual dengan Cekap dalam Pertanyaan SQLAlchemy Tunggal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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