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

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日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度