我正在尝试找出如何做类似 this question 的答案这样的事情但使用 SQLAlchemy。
很难找到如何在不求助于原始 SQL 的情况下根据两列之间的差异对查询结果进行排序。
非常感谢任何帮助!!
此外,出于好奇,是否可以创建一个自动计算其他两列之间差异的列?例如,您将有一个收入和损失列,然后是一个自动合并这些列的利润列。
最佳答案
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
关于python - 比较 SQLAlchemy ORM 中两列之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33505946/