在單一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中文網其他相關文章!