【发布时间】:2018-01-26 22:34:35
【问题描述】:
我有 posgresql 和 2 列 datetime 值。如何通过 sqlalchemy 获得这些列之间的差异?
理想情况下,我只需要具有最大差异值的一行
【问题讨论】:
标签: python postgresql sqlalchemy
我有 posgresql 和 2 列 datetime 值。如何通过 sqlalchemy 获得这些列之间的差异?
理想情况下,我只需要具有最大差异值的一行
【问题讨论】:
标签: python postgresql sqlalchemy
假设您已经定义了为数据库创建会话所需的类和其他代码,您可以像这样查询最大差异:
# code to set up database engine...
class SomeTable(Base):
__tablename__ = 'some_table'
id_ = Column(Integer, primary_key=True)
datetime_1 = Column(DateTime)
datetime_2 = Column(DateTime)
# code to set up session...
>>> from sqlalchemy.sql import func
>>> q = session.query(func.max(SomeTable.datetime_1 - SomeTable.datetime_2))
>>> print(q)
SELECT max(some_table.datetime_1 - some_table.datetime_2) AS max_1
FROM some_table
>>> print(q.one())
(datetime.timedelta(133, 28552, 844875),)
>>> diff = q.scalar() # to get the value directly
>>> diff
datetime.timedelta(133, 28552, 844875)
>>> print(diff)
133 days, 7:55:52.844875
【讨论】: