之前咱们有讲sqlalchemy的使用,可以查看我之前的教程
Flask使用Flask-SQLAlchemy操作MySQL和Python3使用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条结束