如何在Flask-SqlAlchemy中编写混合属性

时间:2015-09-12 20:13:30

标签: python postgresql sqlalchemy

我需要在我的模型上添加平均时间戳。我有表达式的查询:

  

从歌曲中选择to_timestamp(AVG(EXTRACT(epoc from play_at)));

我不知道如何为这样的查询做hybrid_property部分;是否可以直接使用表达式?

这就是我目前所拥有的:

class Song(db.Model):
    ...
    played_at = db.Column(db.DateTime, server_default=db.func.now(), nullable=False)
    ...

    @hybrid_property
    def avg_played(self):
        # what to do here?
        pass

    @avg_played.expression
    def avg_played(self):
        return db.func.to_timestamp(db.func.avg(db.func.extract(db.text('epoch'), self.played_at)))

但是表达式给出了错误:

  

sqlalchemy.exc.ProgrammingError:(psycopg2.ProgrammingError)列“song.id”必须出现在GROUP BY子句中或用于聚合函数

我不明白为什么该查询需要group_by

0 个答案:

没有答案