sqlalchemy排序order和limit/offset/slice

之前咱们有讲sqlalchemy的使用,可以查看我之前的教程

Flask使用Flask-SQLAlchemy操作MySQLPython3使用SQLAlchemy(ORM)对象关系映射器操作MySQL两个笔记

那么这次我们来讲下sqlalchemy高级查询,order排序和limit/offset/slice

1.order排序

我们使用flask的时候可以直接在定义表对象模型的时候进行一个默认排序

__mapper_args__ = {
    "order_by": PostID.desc()
}

同时我们可以在数据库查询操作时进行排序,使用order_by方法

lists = db.session.query(Post).filter_by(CateID=catid).order_by(Post.PostID.desc()).all()

最后还有一个简单的方式,直接在需要排序的字段前面加"-"即可

lists = db.session.query(Post).filter_by(CateID=catid).order_by("-PostID").all()

下面几种方法我主要用来分页的

2.limit+offset取指定记录

lists = db.session.query(Post).filter_by(CateID=catid).limit(10).offset(100).all()

从第100条记录开始,取10条记录,offset可以设置偏移位,用法比较简单,可以自己试下

3.slice切片

slice用法和上面相似,我们直接看例子

lists = db.session.query(Post).filter_by(CateID=catid).slice(90,100).all()

上面是从90条记录开始,取倒100条结束


内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/659.html

我要评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。