比较SQLAlchemy ORM中两列之间的差异



我正试图找出如何使用SQLAlchemy来完成类似这个问题的答案。

在不使用原始SQL的情况下,很难找到如何根据两列之间的差异对查询结果进行排序。

非常感谢您的帮助!!

此外,出于好奇,是否可以创建一个列来自动计算其他两列之间的差异?例如,您将有一个收入和损失列,然后是一个自动组合这些列的利润列。

session.query((Table.revenue - Table.loss).label('profit')).order_by('profit desc').all()

对于自动计算列,您可以使用事件

from sqlalchemy import event
class Table(Model):
    id = Column(Integer, primary_key=True)
    revenue = Column(Integer)
    loss = Column(Integer)
    profit = Column(Integer)
@event.listens_for(Table.revenue, 'set')
def revenue_listener(target, value, oldvalue, initiator):
    # update profit when revenue change
    target.profit = value - (target.loss or 0)
@event.listens_for(Table.loss, 'set')
def loss_listener(target, value, oldvalue, initiator):
    # update profit when loss change
    target.profit = (target.revenue or 0) - value

最新更新