Python SQLAlchemy,Postgres,加入炼金术模型

Python SQLAlchemy,Postgres,加入炼金术模型,python,sqlalchemy,distinct,Python,Sqlalchemy,Distinct,我对SQLAlchemy比较陌生,到目前为止还没有做过这么复杂的事情。我现在需要返回一行的最新“版本”。我可以使用“distinct”返回相关列表,但是我很难让查询返回SQLAlchemy模型 session.query(Document.document_id,func.max(Document.id)).\ filter_by(container_id=1,active=True).\ group_by(Document.document_id).all() 这将返回我需

我对SQLAlchemy比较陌生,到目前为止还没有做过这么复杂的事情。我现在需要返回一行的最新“版本”。我可以使用“distinct”返回相关列表,但是我很难让查询返回SQLAlchemy模型

 session.query(Document.document_id,func.max(Document.id)).\
    filter_by(container_id=1,active=True).\
    group_by(Document.document_id).all()
这将返回我需要的ID列表。但我真正需要的是整个模型

我相信有一个简单的方法加入它。然而,我完全没有意识到这一点。

使用a,您可以加入:

subq = (session.query(
            # Document.document_id, # do not need this really
            func.max(Document.id).label("max_id")
        )
        .filter(Document.container_id == 1)
        .filter(Document.active == True)
        .group_by(Document.document_id)
        ).subquery("subq")

qry = (session.query(Document)
        .join(subq, Document.id == subq.c.max_id)
        ).all()