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

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

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

作者: dawei

【声明】:永州站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐

联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部