使用一個查詢在 SQLAlchemy 中連接多個表
SQLAlchemy 允許透過使用單一查詢連接多個資料表來有效地擷取資料。要連接多個表,需要您定義表示資料庫中表格的類別之間的關係。
在您的範例中,您有三個類別:User、Document 和 DocumentsPermissions。讓我們在這些類別之間建立關係:
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)
透過這些關係,您可以使用單一查詢來擷取所需的表格:
query = session.query(User, Document, DocumentsPermissions) \ .filter(User.email == Document.author) \ .filter(Document.name == DocumentsPermissions.document) \ .filter(User.email == "[email protected]") \ .all()
此查詢連接User、Document 和DocumentsPermissions 表根據他們的關係並根據電子郵件過濾結果。最終結果將是包含所有三個表中的資料的元組列表,如您所描述的。透過使用此方法,您可以透過單一資料庫查詢有效率地從多個表中檢索資料。
以上是如何在 SQLAlchemy 中透過單一查詢高效連接多個表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!