我是靠谱客的博主 苹果手机,这篇文章主要介绍sqlalchemy 三种排序方式详解,现在分享给大家,希望可以做个参考。

例如我这里有一个类User

复制代码
1
2
3
4
5
6
class User(Base):    __tablename__ = "user"    id = Column(Integer , primary_key=True , autoincrement=True)     name = Column(String(50) , nullable=False)     create_time(DateTime , nullable=False , default=datetime.now)  

第一种:直接在查询语句中使用order_by

复制代码
1
2
3
results = session.query(User).order_by(User.create_time.desc()).all()  print(results)

第二种:自定义字段,即传入字符串类型的字段名

复制代码
1
2
3
4
5
6
7
8
from sqlalchemy import desc #order_by降序并取第一条数据,如果不取第一条,直接把first()方法去掉 query.order_by(desc(“create_time”)).first() #order_by升序并取第一条数据,如果不取第一条,直接把first()方法去掉 query.order_by(“create_time”).first()

这里还可以扩展一下排序,字段开始带 - ,那就说明是倒序

复制代码
1
2
3
4
5
6
7
from sqlalchemy import asc from sqlalchemy import desc if order_column.startswith('-'): query = query.order_by(desc(order_column[1:])) else: query = query.order_by(asc(order_column))

在这里插入图片描述

第三种:在定义模型时声明排序方式

复制代码
1
2
3
4
5
6
7
8
9
10
class User(Base):     __tablename__ = "user"     id = Column(Integer , primary_key=True , autoincrement=True)     name = Column(String(50) , nullable=False)     create_time = Column(DateTime , nullable=False , default=datetime.now)      __mapper_args__ = {     "order_by":create_time.desc()     }  

然后我们再查询下,查询代码如下:

复制代码
1
2
results = session.query(User).all()

运行查询代码,结果一样能实现我们想要的效果。

最后

以上就是苹果手机最近收集整理的关于sqlalchemy 三种排序方式详解的全部内容,更多相关sqlalchemy内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(84)

评论列表共有 0 条评论

立即
投稿
返回
顶部