如何为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感觉到我的方式。)