微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

分页查询不可以再跟first(),all()等

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+加上items 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐