栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Flask relationship的数据集如何分页

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Flask relationship的数据集如何分页

这个问题纠结了两天了,在往上查了好多,但资料少之又少,没办法,只能自己往根刨,先思考,sqlalchemy的分页是通过方法:paginate,而该方法是在类:BaseQuery即查询结果类中,relatisonship如何才能返回查询结果类呢?去官网查看relationship,他的参数有一个lazy,该lazy主要是设置数据的加载时机和数据方式,如lazy=select,就是访问到该属性时,才会加载该树形数据(X.a)。而查看到属性dynamic时官网描述 

dynamic: is special and useful if you have many items. Instead of loading the items SQLAlchemy will return another query object which you can further refine before loading the items. This is usually what you want if you expect more than a handful of items for this relationship。

啥意思呢?大意是:dynamic重要性主要体现在当数据量较大的时候,如果dynamic,那么relationship的属性返回的是查询对象(query object),这好像与BaseQuery相关,于是亲自动手试试(百看不如一试):
class Tag(Base):
    __tablename__ = 'tag'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(100), nullable=False)
    state = db.Column(db.Boolean, comment="0:enable; 1:disable")
    goodsTypes = db.relationship('GoodsType', secondary=lk_tag_goodstype, lazy='dynamic')


在controller(route定义)模块查询:
tag = Tag.query.get(tag_id)
paginate = tag.goodsTypes.paginate(page=page_num, per_page=data_count)

打印json结果:
{"total": 1, "items": [{"parentId": 0, "state": false, "name": "手机", "unitId":
3, "alert_condition": 2, "createUserId": 1, "updateUserId": 1, "id": 6, "depth": 1, "description": "手机类", "alert_count":
5, "createDate": "2022-06-10 13:29:14", "updateDate": "2022-06-10 13:29:14"}]}
 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/976949.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号