SQLAlchemy:在單一查詢中連接多個資料表
在 SQLAlchemy 中,連接多個資料表對於擷取複雜資料至關重要。考慮以下場景,其中您有三個映射類別:User、Document 和 DocumentPermissions。目標是檢索根據特定條件組合這些表的自訂表,類似於以下內容:
email | name | document_name | document_readAllowed | document_writeAllowed
初始方法及其局限性
初始方法嘗試使用以下查詢連接表可能不會產生所需的結果結果:
result = session.query(User, Document, DocumentPermission).filter_by(email = "[email protected]").all()
使用中間表改進查詢
為了有效地連接表,有必要利用中間表將一個表的主鍵連接到另一個的外鍵。在本例中,Document 透過作者列連接到 User,DocumentsPermissions 透過文件列連接到 Document。
改進的查詢利用中間表來建立表格之間的關係:
q = Session.query( User, Document, DocumentPermissions, ).filter( User.email == Document.author, ).filter( Document.name == DocumentPermissions.document, ).filter( User.email == 'someemail', ).all()
透過執行以下步驟,您可以在單一SQLAlchemy 查詢中高效地連接多個表並檢索所需的數據。
以上是如何在單一 SQLAlchemy 查詢中有效連接多個表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!