加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

sqlalchemy和flask-sqlalchemy的几种分页方法

发布时间:2020-12-12 00:03:21 所属栏目:MySql教程 来源:网络整理
导读:sqlalchemy中使用query查询,而flask-sqlalchemy中使用basequery查询,他们是子类与父类的关系 1. 用offset()设置索引偏移量,limit()限制取出量 db.session.query(User.name).filter(User.email.like( +email+ )).limit(page_size).offset((page_index-1)* 2

sqlalchemy中使用query查询,而flask-sqlalchemy中使用basequery查询,他们是子类与父类的关系

1.用offset()设置索引偏移量,limit()限制取出量

db.session.query(User.name).filter(User.email.like(+email+)).limit(page_size).offset((page_index-1)*

2.用slice(偏移量,取出量)函数

db.session.query(User.name).filter(User.email.like(+email+)).slice((page_index - 1) * page_size,page_index *

注释:此方法和第一种相同的效果。

因为:由一下内部方法可知,slice()函数第一个属性就是offset()函数值,第二个属性就是limit()函数值

    <span style="color: #0000ff;"&gt;if</span> start <span style="color: #0000ff;"&gt;is</span> <span style="color: #0000ff;"&gt;not</span> None <span style="color: #0000ff;"&gt;and</span> stop <span style="color: #0000ff;"&gt;is</span> <span style="color: #0000ff;"&gt;not</span><span style="color: #000000;"&gt; None:
        self._offset </span>= (self._offset <span style="color: #0000ff;"&gt;or</span> 0) +<span style="color: #000000;"&gt; start
        self._limit </span>= stop -<span style="color: #000000;"&gt; start
    </span><span style="color: #0000ff;"&gt;elif</span> start <span style="color: #0000ff;"&gt;is</span> None <span style="color: #0000ff;"&gt;and</span> stop <span style="color: #0000ff;"&gt;is</span> <span style="color: #0000ff;"&gt;not</span><span style="color: #000000;"&gt; None:
        self._limit </span>=<span style="color: #000000;"&gt; stop
    </span><span style="color: #0000ff;"&gt;elif</span> start <span style="color: #0000ff;"&gt;is</span> <span style="color: #0000ff;"&gt;not</span> None <span style="color: #0000ff;"&gt;and</span> stop <span style="color: #0000ff;"&gt;is</span><span style="color: #000000;"&gt; None:
        self._offset </span>= (self._offset <span style="color: #0000ff;"&gt;or</span> 0) +<span style="color: #000000;"&gt; start

    </span><span style="color: #0000ff;"&gt;if</span> self._offset ==<span style="color: #000000;"&gt; 0:
        self._offset </span>=<span style="color: #000000;"&gt; None

@_generative(_no_statement_condition)
</span><span style="color: #0000ff;"&gt;def</span><span style="color: #000000;"&gt; limit(self,limit):
    </span><span style="color: #800000;"&gt;"""</span><span style="color: #800000;"&gt;Apply a ``LIMIT`` to the query and return the newly resulting

    ``Query``.

    </span><span style="color: #800000;"&gt;"""</span><span style="color: #000000;"&gt;
    self._limit </span>=<span style="color: #000000;"&gt; limit

@_generative(_no_statement_condition)
</span><span style="color: #0000ff;"&gt;def</span><span style="color: #000000;"&gt; offset(self,offset):
    </span><span style="color: #800000;"&gt;"""</span><span style="color: #800000;"&gt;Apply an ``OFFSET`` to the query and return the newly resulting
    ``Query``.

    </span><span style="color: #800000;"&gt;"""</span><span style="color: #000000;"&gt;
    self._offset </span>= offset</pre>

3.用paginate(偏移量,取出量)函数,用于BaseQuery

user_obj=User.query.filter(User.email.like(+email+ object_list =user_obj.items

4.filter中使用limit

db.session.query(User.name).filter(User.email.like(+email+) limit (page_index - 1) *

http://www.cnblogs.com/rgcLOVEyaya/p/RGC_LOVE_YAYA_350days.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读