SQLAlchemy-通过联接表的聚合查询表

时间:2019-03-26 09:52:26

标签: python postgresql sqlalchemy

我正在尝试查询表,并且仅返回与联接表聚合条件匹配的结果。具体来说,假设我们有两个表srcA,它们被定义为具有一对多关系的表(声明性基数):

B

我希望能够查询class A(Base): __tablename__ = "a" id = Column(Integer, primary_key=True) bees = relationship("B", back_populates="a", lazy="joined") class B(Base): __tablename__ = "b" id = Column(Integer, primary_key=True) a_id = Column(Integer, ForeignKey("a.id"), index=True) a = relationship("A", back_populates="bees") state = Column(String) value = Column(Integer) 的聚合结果的A,例如 “返回所有A的链接B的值之和状态等于“ DONE”的值大于20000“

如果我没记错的话,它对应于以下SQL查询(仅返回A对象的ID):

B

理想情况下,我想使用混合属性(我们将其称为SELECT a.id FROM a LEFT OUTER JOIN b ON a.id = b.a_id group by a.id having sum(case when b.state='DONE' then b.value end else 0) > 20000 ),以便可以使用例如remaining_valuesession.query(A).filter(A.remaining_value > 20000)

0 个答案:

没有答案
相关问题