首页 > 解决方案 > 来自时间序列中排序列的 sqlalchemy 查询

问题描述

我有一个 sqlite 表定义为:

class HourlyUserWebsite(Base):                                                                                                                                                                              
    __tablename__ = 'hourly_user_website'                                                                                                                                                                   

    id = Column(Integer, primary_key=True)                                                                                                                                                                  
    user = Column(String(600), index=True)                                                                                                                                                                  
    domain = Column(String(600))                                                                                                                                                                            
    time_secs = Column(Integer, index=True)                                                                                                                                                                 

    def __repr__(self):                                                                                                                                                                                     
        return "HourlyUserWebsite(user='%s', domain='%s', time_secs=%d)"  % \                                                                                                                               
            (self.user, self.domain, self.time_secs)                                                                                                                                                        

我使用类方法向其中添加元素:

   def add_elements_to_hourly_db(self, data, start_secs, end_secs, engine):                                                                                                                                
        session = self._get_session(engine)                                                                                                                                                                 
        for el in data:                                                                                                                                                                                     
            session.add(el)                                                                                                                                                                                 
        session.commit()                                                                                                                                                                                    
        return                                                                                                                                                                                              

由于数据是时间序列,我希望始终添加具有增加或等于 time_secs 值(不减少)的元素。

我通过如下查询从表中获取数据: session.query(HorlyUserWebsite)

我希望查询的结果按time_secs和排序user

有什么办法可以做到吗?数据是否可以以优化排序数据查询的方式存储,同时记住它是一个时间序列?

标签: databasesqlitesqlalchemy

解决方案


session.query(HourlyUserWebsite).order_by(HourlyUserWebsite.user,HourlyUserWebsite.time_secs.desc()).all()

推荐阅读