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
Lepaskan: 2025-01-05 01:46:39
asal
302 orang telah melayarinya

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
Salin selepas log masuk

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()
Salin selepas log masuk

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()
Salin selepas log masuk

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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan