【问题标题】:Compare difference between two columns in SQLAlchemy ORM比较 SQLAlchemy ORM 中两列之间的差异
【发布时间】:2016-02-04 00:12:12
【问题描述】:

我正在尝试找出如何执行类似于this question 的答案但使用 SQLAlchemy 的操作。

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

非常感谢任何帮助!

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

【问题讨论】:

    标签: python sqlite python-2.7 sqlalchemy


    【解决方案1】:
    session.query((Table.revenue - Table.loss).label('profit')).order_by('profit desc').all()
    

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

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      相关资源
      最近更新 更多