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
Lepaskan: 2025-01-01 03:11:10
asal
273 orang telah melayarinya

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

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

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!

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