如何在SqlAlchemy列上放置一个weekly_average属性?

时间:2019-03-08 21:42:00

标签: python sqlalchemy

如何为SqlAlchemy表模型的列添加属性以计算该列的每周平均值?

我可以使用方法FileTable.file_size(如下)获得weekly_average_file_size的每周平均值。但是,最好将一个weekly_average属性添加到file_size。

class FileTable(Base):
    file_name = Column(String(150))
    file_size = Column(BigInteger)
    file_dt = Column(Date)

    @classmethod
    def weekly_average_file_size(cls):
        qry_object = select(
            [func.AVG(cls.file_size
            ).label('average_file_size')]
            ).where(
                cls.file_dt >= 
                   literal_column(
                       "NOW() - INTERVAL '1 week'"))
        session = get_session()
        result = session.execute(
            qry_object.compile(
                compile_kwargs={'literal_binds': True}
                ).string
            ).fetchone()
        return int(result.average_file_size)

想法是将FileTable.weekly_average_file_size()替换为FileTable.file_size.weekly_average

或者这首先是个坏主意吗?

(是的,该查询执行被中断。仍然通过SqlAlchemy感觉到我的方式。)

0 个答案:

没有答案