首頁 > 資料庫 > mysql教程 > 如何在單一 SQLAlchemy 查詢中連接多個表?

如何在單一 SQLAlchemy 查詢中連接多個表?

DDD
發布: 2024-12-30 10:45:11
原創
992 人瀏覽過

How to Join Multiple Tables in a Single SQLAlchemy Query?

在單一SQLAlchemy 查詢中連接多個資料表

在SQLAlchemy 中,連接表可讓您將多個相關資料表中的資料組合到一個單一的表中結果集。當您需要跨具有關係的表(例如具有多個文件的使用者)查詢資料時,這非常有用。

要使用 SQLAlchemy 連接多個表,可以使用 join() 方法。此方法接受兩個參數:第一個參數是目標表,第二個參數是指定如何連接表格的條件。

例如,考慮以下表結構:

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"))
登入後複製

要查詢電子郵件地址為「[email protected]」的使用者的所有文件和權限,您可以使用以下查詢:

q = session.query(
         User, Document, DocumentPermissions,
    ).filter(
         User.email == Document.author,
    ).filter(
         Document.name == DocumentPermissions.document,
    ).filter(
        User.email == 'someemail',
    ).all()
登入後複製

此查詢執行連線User、Document 和DocumentsPermissions表,過濾結果以僅包含由電子郵件為「someemail」的使用者所創作的文件。結果是包含使用者、文件和權限資料的元組清單。

以上是如何在單一 SQLAlchemy 查詢中連接多個表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板