湫兮如风i 2022-04-23 15:27 采纳率: 100%
浏览 26
已结题

flask 实现分页中的小问题

img

如上图,我想使用paginate方法进行分页,Basequery有paginate方法。

而我想运行原生sql,返回的类型就不是Basequery了 是CursorResult,就没有paginate方法了

img

大家有没有什么办法,例如转换CursorResult为Basequery类型?

  • 写回答

1条回答 默认 最新

  • xjf2333 2022-04-25 21:53
    关注

    首先sqlAlchemy是数据库框架。
    你完全可以用他的框架语言代替sql。
    其次也可以不用它分页,自己做逻辑分页。
    最后如果你一定要转换的话,在python中通过字典作为过渡数据类型是一个很好的方法
    cur = conn.cursor()
    cur.execute("...")
    data = [dict(((cur.description[i][0]), value)
    for i, value in enumerate(row)) for row in cur.fetchall()]
    pagination = Pagination(page=page, total=..., per_page=...)
    return render_template('xxx.html', pagedata=data, pagination=pagination)
    或许这是一种解决方案
    如果你用的db.session.execute就更简单了
    data=db.session.execute(sql).all()
    pagination = Pagination(page=page, total=..., per_page=...)
    return render_template('xxx.html', pagedata=data, pagination=pagination)
    Pagination能做到的其实并不多
    sql中使用LIMIT {limit} offset {offset} 是必须的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 5月17日
  • 已采纳回答 5月9日
  • 创建了问题 4月23日