Flask-SQLAlchemy 查询排序

Flask 1438 浏览

今天发现查询的列表没有按照降序排列,这里总结了以下几种方法:

| 查询语句中使用 order_by

按照时间降序,这两种写法亲测完全没有问题。

# 方法1
articles = Article.query.order_by(Article.create_time.desc()).all()
# 方法2
articles = Article.query.order_by(db.desc(Article.create_time)).all()

网上还有种写法,我试了一直报错,不知道是没这个写法还是我的用法不对,可以给大家参考下。

articles = Article.query.order_by("-create_time").all()

# 报错内容如下
sqlalchemy.exc.CompileError: Can't resolve label reference for ORDER BY / GROUP BY. Textual SQL expression '-create_time' should be explicitly declared as text('-create_time')

| 模型中声名排序方式

在模型中声名过了,我们在查询时候默认排序就是按照这里的,不需要order_by了。

class Article(db.Model):
    """Represents Protected article."""
    __tablename__ = 'it_article'
    id = db.Column(db.Integer(), primary_key=True, autoincrement=True)
    title = db.Column(db.String(255), nullable=False)
    introduction = db.Column(db.Text, nullable=False)
    author = db.Column(db.String(50), nullable=False)
    create_time = db.Column(db.Integer(), nullable=False)

    __mapper_args__ = {
        "order_by": create_time.desc()
    }
|  版权声明:本文为博主原创文章,转载请注明出处。