Python Flask,数据库,SQLAlchemy,数据库查询,分页,分页查询paginate

本文介绍了如何在Python Flask应用中使用SQLAlchemy进行数据库查询,特别是演示了分页查询的实现方法,帮助开发者高效地管理大量数据。
摘要由CSDN通过智能技术生成

数据库的增、删、改通过 db.session 的会话对象,数据库的查询一般通过 模型类名.query() (也可以通过session会话查询)

 

demo.py(数据库查询):

import User  # 导入模型类

# 通过query查询
# 查询所有。 (User是模型类名)
user_list = User.query.all()   # 返回列表

# 查询第一个
user1 = User.query.first()  # 返回模型类对象。 不存在返回None

# 根据主键id查询
user2 = User.query.get(3)

# 查询结果的数量
user_count = User.query.count()

# 分页查询
paginate_obj = User.query.paginate(page=1, per_page=20, error_out=False)  # 第一页,每页20条数据。 默认第一页
# 参数:error_out 设为True表示页数不是int或超过总页数时,会报错,并返回404状态码。默认True


# 过滤器
# filter_by过滤器 (精确条件)
user_list = User.query.filter_by(name='wang').all()  # 条件只能是等号= 
user = User.query.filter_by(name='wang', age=18).first()   # 逗号连接多个条件,是并且的关系。

# filter过滤器 (通用过滤器。模糊查询)
user = User.query.filter(User.name=="wang", User
  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flask-Paginate是一个Flask扩展,它提供了一种简单的方法来实现分页功能。它基于SQLAlchemy,并且可以与任何SQLAlchemy支持的数据库一起使用。 首先,你需要安装Flask-Paginate扩展。可以通过以下命令来安装: ``` pip install Flask-Paginate ``` 然后,你需要导入Flask-Paginate扩展并创建一个分页器。以下是一个简单的示例: ```python from flask_paginate import Pagination, get_page_args @app.route('/') def index(): # 获取当前页码和每页显示的数量 page, per_page, offset = get_page_args(page_parameter='page', per_page_parameter='per_page') # 从数据库中获取数据 data = get_data_from_database(offset=offset, per_page=per_page) # 创建分页pagination = Pagination(page=page, per_page=per_page, total=count_total_items_in_database(), css_framework='bootstrap4') # 渲染模板 return render_template('index.html', data=data, pagination=pagination) ``` 在上面的示例中,我们首先使用`get_page_args`函数从请求参数中获取当前页码和每页显示的数量。然后,我们从数据库中获取数据,并使用`Pagination`类创建一个分页器对象。最后,我们将数据和分页器对象传递给模板进行渲染。 在模板中,你可以使用`prev_href`,`next_href`和`links`属性来生成分页器的HTML代码。以下是一个简单的示例: ```html <div class="pagination"> <a href="{{ pagination.prev_href() }}">Previous</a> {% for page in pagination.links %} {% if page == '...' %} <span class="ellipsis">...</span> {% elif page == pagination.page %} <span class="current">{{ page }}</span> {% else %} <a href="{{ page }}">{{ page }}</a> {% endif %} {% endfor %} <a href="{{ pagination.next_href() }}">Next</a> </div> ``` 上面的代码会生成一个类似于以下HTML代码的分页器: ```html <div class="pagination"> <a href="/?page=1&per_page=10">Previous</a> <a href="/?page=1&per_page=10">1</a> <a href="/?page=2&per_page=10">2</a> <a href="/?page=3&per_page=10">3</a> <a href="/?page=4&per_page=10">4</a> <a href="/?page=5&per_page=10">5</a> <span class="ellipsis">...</span> <a href="/?page=10&per_page=10">10</a> <a href="/?page=2&per_page=10">Next</a> </div> ``` 此外,你还可以使用`prev_disabled`和`next_disabled`属性来禁用“上一页”和“下一页”链接,如果当前页码是第一页或最后一页的话。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值