例如我这里有一个类User
复制代码
1
2
3
4
5
6class 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
3results = session.query(User).order_by(User.create_time.desc()).all() print(results)
第二种:自定义字段,即传入字符串类型的字段名
复制代码
1
2
3
4
5
6
7
8from 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
7from 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
10class 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
2results = session.query(User).all()
运行查询代码,结果一样能实现我们想要的效果。
最后
以上就是苹果手机最近收集整理的关于sqlalchemy 三种排序方式详解的全部内容,更多相关sqlalchemy内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复