Menyertai Berbilang Jadual dalam SQLAlchemy Menggunakan Satu Pertanyaan
SQLAlchemy membolehkan pengambilan data yang cekap dengan menggabungkan berbilang jadual dengan satu pertanyaan. Untuk menyertai beberapa jadual, ia memerlukan anda mentakrifkan perhubungan antara kelas yang mewakili jadual dalam pangkalan data anda.
Dalam kes anda, anda mempunyai tiga kelas: Pengguna, Dokumen dan DocumentsPermissions. Mari kita wujudkan perhubungan antara kelas ini:
class User(Base): __tablename__ = 'users' email = Column(String, primary_key=True) name = Column(String) class Document(Base): __tablename__ = "documents" name = Column(String, primary_key=True) author = Column(String, ForeignKey("users.email"), nullable=False) class DocumentsPermissions(Base): __tablename__ = "documents_permissions" readAllowed = Column(Boolean) writeAllowed = Column(Boolean) document = Column(String, ForeignKey("documents.name"), nullable=False)
Dengan perhubungan ini, anda boleh mendapatkan semula jadual yang diingini menggunakan satu pertanyaan:
query = session.query(User, Document, DocumentsPermissions) \ .filter(User.email == Document.author) \ .filter(Document.name == DocumentsPermissions.document) \ .filter(User.email == "[email protected]") \ .all()
Pertanyaan ini menyertai jadual Pengguna, Dokumen dan DocumentsPermissions oleh hubungan mereka dan menapis hasil berdasarkan e-mel. Hasil akhir ialah senarai tupel yang mengandungi data daripada ketiga-tiga jadual, seperti yang anda nyatakan. Dengan menggunakan kaedah ini, anda boleh mendapatkan semula data daripada berbilang jadual dengan cekap dengan satu pertanyaan pangkalan data.
Atas ialah kandungan terperinci Bagaimana untuk Menyertai Berbilang Jadual dengan Cekap dalam SQLAlchemy dengan Satu Pertanyaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!