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中文网其他相关文章!