我正在尝试使用sqlalchemy构建一个选择查询,但我需要按计算值对结果进行排序,我不知道该怎么做.
基本上,我有一个"START_TIME"和"END_TIME"栏目,我想订购基于START_TIME结果,然后END_TIME但如果END_TIME <START_TIME我想补充86400000吧:
end_time + (86400000 if end_time < start_time else 0)
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚该怎么做.有没有简单的方法将计算属性添加到我的表类并让查询检索该属性?
我已经尝试使用@property为计算出的end_time创建一个getter,但它没有用.
首先,您需要定义将包含实现为sql函数的公式的列
比使用定义的列构建查询:
col = tclass.end_time + case([(tclass.end_time<tclass.start_time, 86400000)], else_=0 )
q = session.query(col).order_by(col)
print q
Run Code Online (Sandbox Code Playgroud)
还有一种方法可以将这样的计算列添加到Mapped Object类定义中:
class TName(Base):
end_time = Column(Integer)
start_time = Column(Integer)
calc_column = end_time + case([(end_time<start_time, 86400000)], else_=0 )
q2 = session.query(TName.calc_column).order_by(TName.calc_column)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3419 次 |
| 最近记录: |