You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask SQLAlchemy中如何按数值大小查询获取最新帖子

Flask SQLAlchemy 按数值时间戳查询最新帖子实现方法

需求核心是对数值类型的Unix时间戳字段做降序排序(数值越大越靠前,即最新帖子优先),直接在查询链中加入排序规则即可,不需要额外做类型转换。

核心修改逻辑

  • SQLAlchemy 原生支持数值类型字段排序,直接调用order_by()方法即可按字段数值大小比对排序,不需要额外做格式转换
  • 时间戳数值越大代表发布时间越新,对时间戳字段调用.desc()方法做降序排列,即可实现最新帖子排在最前的效果
  • 注意查询链顺序:先过滤筛选 -> 再排序 -> 最后分页,如果先分页再排序,排序范围仅限当前分页内的条目,会出现排序结果错乱的问题

代码修改示例

首先确认你的posts模型中存储Unix时间戳的字段名(示例中用create_timestamp指代,请替换为你代码里实际的字段名),修改首页路由中的查询部分即可:

@app.route("/", methods=["GET", "POST"])
def home():
    if request.method == "POST":
        postToBoard(1, request.form["content"], request.form["post_name"])
    user = None
    if "user" in session:
        user = session["user"]
    # 核心修改:加入按时间戳降序排序,同时支持从URL参数动态获取页码
    home_posts = posts.query.filter_by(board=1)\
        .order_by(posts.create_timestamp.desc())\
        .paginate(
            page=request.args.get('page', 1, type=int),
            per_page=25,
            error_out=False
        )
    if "user" in session:
        return render_template("index.html", all_posts=home_posts, header=f"Welcome back, {user}.", values=home_posts, name=website_name)
    else:
        return render_template("index.html", all_posts=home_posts, header=f"Welcome to {website_name}.", values=home_posts, name=website_name)

补充说明

  • 示例中将原本写死的页码1调整为从URL的page参数动态获取,访问/?page=2即可拿到第二页帖子,不需要额外修改路由逻辑,适配分页组件的常规用法
  • 如果后续需要查询最早发布的帖子,只需要把.desc()替换为.asc()做升序排列即可

内容的提问来源于stack exchange,提问作者wideey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 18:09:26