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!