flask-sqlalchemy app分页

flask-sqlalchemy app分页

一、flask-sqlalchemy中分页

@app.route('/fieldlistquery' ,methods=['GET','POST'])
def fieldlistquery():#利用Flask分页处理的paginate对象,完成分页查询
    """
    Query fieldlist 
    """
    page_limit_size = 5
    page_limit_defult = 5
    row2dict = lambda row: {col.name: str(getattr(row, col.name)) for col in row.__table__.columns}#将sqlalchemy result对象转换为dict对象
    pagenum = request.args.get('pagenum', 1, type=int) #参数 type=int 保证参数无法转换成整数时,返回默认值。
    pagesize = request.args.get('pagesize', type=int)    
    pagesize = pagesize if (pagesize is not None and pagesize < page_limit_size ) else page_limit_defult
    filter = [1==1]
    query_list = None
    total_page = None
    current_page  = None
    rsp = {'status':200,'data':[]}
    try:
        #.with_entities(Fieldlist.name,Fieldlist.id)
        paginate = Fieldlist.query.filter(*filter).order_by(Fieldlist.fieldname.desc()
                                                    ).paginate(pagenum, per_page = pagesize, error_out=False) #页数是 paginate() 方法的第一个参数,也是唯一必需的参数。可选参数 per_page 用来指定每页显示的记录数量;如果没有指定,则默认显示 20 个记录。
        print(paginate.items) #属性item 显示当前页面中的所有记录,列表形式
        print(paginate.query)#属性query 显示当前页的query对象
        print(paginate)#paginate() 方法的返回值是一个 Pagination 类对象,这个类在 Flask-SQLAlchemy 中定义。 这个对象包含很多属性,用于在模板中生成分页链接,因此可将其作为参数传入了模板 css 。
        query_list = paginate.items 
        rsp['total'] = paginate.total #属性total 显示总的记录条数
        rsp['currentpage'] = paginate.page #属性page当前页码

    except Exception as e:
        rsp['status'] = 400
        rsp['errmsg'] = e.value
    for item in query_list if query_list else []:
        rsp['data'].append(row2dict(item))
    response = make_response(jsonify(rsp))
    return response
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值