在python-SQLAlchemy中,如何按复杂表达式排序?

2024-05-16 02:34:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用“热度”算法对帖子列表的结果进行排序。基本上我想要的是:

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

然而,这类代码并不像预期的那样工作。这根本不考虑时间。你知道吗


Tags: 代码算法列表datetimeby排序orderall
1条回答
网友
1楼 · 发布于 2024-05-16 02:34:00

试试这个

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

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

相关问题 更多 >