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

标签 python sqlite python-2.7 sqlalchemy

我正在尝试找出如何做类似 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/

相关文章:

Python 'Integer devide by Zero' 错误 Pyglet 和 AVBin

Python:当格式不标准时,如何使 for 循环将数据附加到列表?

python - 'read_csv'数据的内存与原始数据不同

PHP:数据库缓存(内存中有 sqlite)

c# - 使用 sqlite-net + async 时设置 Sqlite ThreadingMode

regex - 后视字符串或字符的开头

python - 如何将 astropy 表的标题和单位保存到 ascii 文件中

python - 如何叠加来自不同单元格的图?

c++ - 将 SQLite 日期字段转换为 C++ Time_T

python - vlc mac python 绑定(bind)视频输出和 vlc.py 的位置