Flask筛选数据、分页、一对多关联

flask筛选数据

添加多条学生信息

  • s_list = [学生对象1, 学生对象2,..]
  • db.session.add_all(s_list)

运算符

  • filter(模型名.字段.运算符(‘xxx’))
  • filter(模型名.字段 运算符 值 )

  • 运算符

  • lt 小于

  • le 小于等于

  • gt 大于

  • ge 大于等于

  • in_ 在范围内

  • order_by 排序

  • limit 截取几个信息

  • offset 跳过几个信息

  • get 获取主键对应的信息

  • and_ 并且条件

  • or_ 或者条件

  • not_ 非


from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()


class Student(db.Model):

    s_id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    s_name = db.Column(db.String(20), unique=True)
    s_age = db.Column(db.Integer, default=18)

    __tablename__ = 'student'

    # 初始化,通过这种方式就可以直接通过传参数的方式,创建数据
    def __init__(self, name, age):

        self.s_name = name
        self.s_age = age
import random

from flask import Blueprint, render_template, request
# 注意导入的包
from sqlalchemy import and_, or_, not_

from Stu.models import db, Student

stu = Blueprint('stu', __name__)


@stu.route('/')
def index():
    return render_template('index.html')


@stu.route('/createdb')
def create_db():
    db.create_all()
    return '创建数据库成功'


@stu.route('/dropdb')
def drop_db():
    db.drop_all()
    return '删除数据库成功,可以跑路了'


@stu.route('/createstu', methods=['GET', 'POST'])
def create_stu():
    if request.method == 'GET'
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Flask 中使用 PyMySQL 进行数据分页显示的步骤如下: 1. 安装 Flask 和 PyMySQL ```bash pip install Flask PyMySQL ``` 2. 在 Flask 中连接数据库 ```python from flask import Flask import pymysql app = Flask(__name__) # 连接数据库 def get_conn(): conn = pymysql.connect( host='localhost', user='root', password='password', database='test_db', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor ) return conn # 关闭数据库连接 @app.teardown_appcontext def close_conn(exception): conn = get_conn() conn.close() ``` 3. 定义路由函数并查询数据 ```python @app.route('/list/<int:page>') def user_list(page): page_size = 10 # 每页显示的数据量 start = (page - 1) * page_size # 计算查询的起始位置 # 查询数据 conn = get_conn() with conn.cursor() as cursor: sql = f"SELECT * FROM user LIMIT {start}, {page_size};" cursor.execute(sql) result = cursor.fetchall() # 计算总页数 with conn.cursor() as cursor: sql = "SELECT COUNT(*) AS count FROM user;" cursor.execute(sql) total_count = cursor.fetchone()['count'] total_page = (total_count + page_size - 1) // page_size # 渲染模板并返回数据 return render_template('user_list.html', users=result, current_page=page, total_page=total_page) ``` 4. 在模板中显示分页数据 ```html {% extends 'base.html' %} {% block content %} <h1>User List</h1> <table> <thead> <tr> <th>ID</th> <th>Name</th> <th>Age</th> </tr> </thead> <tbody> {% for user in users %} <tr> <td>{{ user.id }}</td> <td>{{ user.name }}</td> <td>{{ user.age }}</td> </tr> {% endfor %} </tbody> </table> <nav> {% if current_page > 1 %} <a href="{{ url_for('user_list', page=current_page-1) }}">上一页</a> {% endif %} {% if current_page < total_page %} <a href="{{ url_for('user_list', page=current_page+1) }}">下一页</a> {% endif %} </nav> {% endblock %} ``` 这样就可以在 Flask 中使用 PyMySQL 进行数据分页显示了。需要注意的是,这里的分页方式是基于数据的物理位置来分页的,因此需要保证查询的结果集是按照预期的顺序排列的。如果需要按照特定的字段排序,可以在 SQL 语句中添加 `ORDER BY` 子句。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值