你如何通过python SQLAlchemy中的复杂表达式进行排序?

时间:2015-03-26 19:53:18

标签: python flask flask-sqlalchemy

我想通过" hotness"对帖子列表的结果进行排序。算法。基本上我想要这样的东西:

Posts.query.order_by(Post.votes + 1000/(datetime.utcnow() - Post.datetime)).all()

但是,这种代码无法正常工作。它根本没有考虑时间。

1 个答案:

答案 0 :(得分:1)

尝试这样的事情

(
    db.session.query(Post)
    .order_by(
        Post.votes + 1000 / (db.extract('epoch', datetime.now() - Post.datetime))
    )
)

您的方法存在的问题是,sqlalchemy无法决定如何划分积分值和时间差。因此,您必须手动将时间差异解释为整数值。在这里,我从差异中提取时代,你可以选择提取任何东西。