繁体   English   中英

SQLAlchemy-在其他列中具有相同值的行中的列最大值

[英]SQLAlchemy - Max of column among rows with same value in other column

我有一个带有列session_id (INT)和timeStamp (INT)的表DataUnit 我想找到给定session_id值的timeStamp的最大值。 如何在SQLAlchemy中做到这一点?

我可以简单地使用给定的session_id来查询所有行,并按timeStamp排序并获取第一个元素,但是这样做会更有效吗?

表格定义:-

class DataUnit(db.Model):
    __tablename__ = 'DataUnit'
    dataUnit_id = Column(Integer(), primary_key=True, autoincrement=True)
    session_id = Column(Integer(), ForeignKey('Session.session_id'))
    timeStamp = Column(BigInteger())

您的数据库可能具有聚合函数MAX() ,并且SQLAlchemy提供了一种通用方法来使用SQL函数表达式 (特殊的func对象)。 由于您对标量值感兴趣,因此您也可以使用Query.scalar() ,它返回第一结果行的第一列,即None。 似乎您使用Flask-SQLAlchemy,因为您继承自db.Model ,因此这是将Model.queryQuery.with_entities()结合使用的方法:

session_id = 'insert session id here'

max_timestamp = DataUnit.query.\
    filter_by(session_id=session_id).\
    with_entities(db.func.max(DataUnit.timeStamp)).\
    scalar()

查询的效率将取决于您的数据库引擎和可能的可用索引。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM