Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menyertai Berbilang Jadual dengan Cekap (Pengguna, Dokumen, Kebenaran) dalam SQLAlchemy?

Bagaimanakah Saya Boleh Menyertai Berbilang Jadual dengan Cekap (Pengguna, Dokumen, Kebenaran) dalam SQLAlchemy?

Patricia Arquette
Patricia Arquetteasal
2025-01-01 03:11:10287semak imbas

How Can I Efficiently Join Multiple Tables (Users, Documents, Permissions) in SQLAlchemy?

Menyertai Berbilang Jadual dalam SQLAlchemy

Dalam SQLAlchemy, menyertai jadual membolehkan gabungan data daripada berbilang entiti berkaitan. Untuk menggambarkan ini, pertimbangkan contoh berikut:

Andaikan anda mempunyai kelas dipetakan berikut yang mewakili pengguna, dokumen dan kebenaran dokumen:

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"))

class DocumentsPermissions(Base):
    __tablename__ = "documents_permissions"
    readAllowed = Column(Boolean)
    writeAllowed = Column(Boolean)

    document = Column(String, ForeignKey("documents.name"))

Untuk mendapatkan semula jadual yang mengandungi maklumat tentang pengguna, dokumen dan kebenaran dokumen untuk pengguna tertentu, anda boleh menggunakan pertanyaan berikut:

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

Ini pertanyaan:

  1. Menyertai jadual Pengguna dengan jadual Dokumen berdasarkan hubungan antara lajur e-mel dan pengarang.
  2. Menyertai jadual Dokumen dengan jadual DocumentsPermissions berdasarkan hubungan antara nama lajur dalam kedua-dua jadual.
  3. Menapis keputusan untuk memasukkan hanya baris di mana User.email sama dengan yang ditentukan value ('someemail') dalam contoh ini.

Dengan melaksanakan pertanyaan ini, anda boleh mendapatkan semula semua maklumat yang berkaitan dengan cekap daripada tiga jadual yang berkaitan dalam satu permintaan, memberikan pandangan komprehensif data yang berkaitan dengan pengguna tertentu.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyertai Berbilang Jadual dengan Cekap (Pengguna, Dokumen, Kebenaran) dalam SQLAlchemy?. 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