Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menyertai Berbilang Jadual dalam Satu Pertanyaan SQLAlchemy?

Bagaimana untuk Menyertai Berbilang Jadual dalam Satu Pertanyaan SQLAlchemy?

DDD
Lepaskan: 2024-12-30 10:45:11
asal
1010 orang telah melayarinya

How to Join Multiple Tables in a Single SQLAlchemy Query?

Bergabung untuk Berbilang Jadual dalam Satu Pertanyaan SQLAlchemy

Dalam SQLAlchemy, menyertai jadual membolehkan anda menggabungkan data daripada berbilang jadual berkaitan menjadi satu set keputusan. Ini boleh berguna apabila anda perlu menanyakan data merentas jadual yang mempunyai perhubungan, seperti pengguna dengan berbilang dokumen.

Untuk menyertai berbilang jadual menggunakan SQLAlchemy, anda boleh menggunakan kaedah join(). Kaedah ini mengambil dua argumen: argumen pertama ialah jadual sasaran dan argumen kedua ialah syarat yang menentukan cara jadual dicantumkan.

Sebagai contoh, pertimbangkan struktur jadual berikut:

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 menanyakan semua dokumen dan kebenaran untuk pengguna dengan e-mel "[email protected]", anda boleh menggunakan yang berikut pertanyaan:

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

Pertanyaan ini melakukan penyambungan antara jadual Pengguna, Dokumen dan DocumentsPermissions, menapis hasil untuk hanya memasukkan dokumen yang dikarang oleh pengguna dengan e-mel "someemail". Hasilnya ialah senarai tupel yang mengandungi data pengguna, dokumen dan kebenaran.

Atas ialah kandungan terperinci Bagaimana untuk Menyertai Berbilang Jadual dalam Satu Pertanyaan SQLAlchemy?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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