gpt4 book ai didi

python - 从最后一个索引开始查询数据库 SQLAlchemy

转载 作者:行者123 更新时间:2023-12-01 01:28:19 29 4
gpt4 key购买 nike

我有以下问题:

我目前正在学习 Flask 和 SQLAlchemy,在我的环境中正在构建一个博客(一个简单的博客)。在我的家乡路线上,我正在执行以下操作:

@app.route("/")
@app.route("/home")
def home():
posts = Post.query.all()
return render_template("home.html", title = "Home", posts = posts)

posts = Post.query.all() 将查询我的 Posts 表上的所有字段,然后在我的模板上执行以下操作:

{% extends "layout.html" %}

{% block content %}

{% for post in posts %}

<article class="media content-section">
<img class="rounded-circle account-img" src="{{
url_for("static", filename="profile_pics/" + post.author.image_file) }}" alt="">
<div class="media-body">
<div class="article-metadata">
<a class="mr-2" href="#">{{ post.author.username }}</a>
<small class="text-muted">{{ post.date_posted.strftime("%Y-%m-%d") }}</small>
</div>
<h2><a class="article-title" href="#">{{ post.title }}</a></h2>
<hr>
</div>
</article>

{% endfor %}


{% endblock %}

问题是,在这个 for 循环中,我的最新帖子显示为最后一篇帖子,当我实际上想将其作为第一篇帖子时,我如何通过 SQLAlchemy 和 Flask 反向查询数据库,或者我是是不是想错了?

最佳答案

使用 SQLAlchemy 的 order_by .

Post.query.order_by(desc(Post.date_posted)).all()

示例:

>>> from datetime import datetime
>>> p1 = Post(posted=datetime.strptime('2018-01-01', '%Y-%m-%d'))
>>> p2 = Post(posted=datetime.strptime('2017-01-01', '%Y-%m-%d'))
>>> p3 = Post(posted=datetime.strptime('2019-01-01', '%Y-%m-%d'))
>>> db.session.add_all([p1, p2, p3])
>>> db.session.commit()
>>> Post.query.order_by(desc(Post.posted)).all()
[<Post 3>, <Post 1>, <Post 2>]
>>> [item.posted.year for item in Post.query.order_by(desc(Post.posted)).all()]
[2019, 2018, 2017] #most recent to oldest

关于python - 从最后一个索引开始查询数据库 SQLAlchemy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53143872/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com