[英]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.query
与Query.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.