Python+MySQL+flask的运用

57 阅读2分钟

可以先创建数据库编一点数据

如图:

image.png

第一步先安装flask和MySQL

可以在Python左下角的软件包选项中搜索flask进行安装

image.png

MySQL前面的文章里面有

前置工作完成后可以开始操作

第一步导入

image.png

第二步连接数据库


def get_connection():
    try:
        # 调用 connect() 配置连接详细信息
        connection = mysql.connector.connect(
            host="本地接口名称",
            user="用户名",
            password="密码",
            database="要连接的表",
        )


    except mysql.connector.Error as err:
         print(err)
    return connection

第三步新建一个文件用来装html文件

第四步开始进行具体的操作

image.png



@app.route('/list')
def listdata():
    """
    处理文章列表分页请求的路由函数 
    支持通过URL参数控制分页大小和当前页码 
    返回包含分页数据的HTML页面 
    """
    try:
        # 获取分页参数(默认第1页,每页2条)
        page = request.args.get('page', 1, type=int)
        page_size = request.args.get('page_size', 2, type=int)

        # 建立数据库连接(假设get_connection()已实现)
        print('连接成功')
        connection = get_connection()

        cursor = connection.cursor(dictionary=True)  # 字典格式结果集

        # 计算分页起始位置(分页核心逻辑)
        start = (page - 1) * page_size

        try:
            # 第一步:获取所有文章(可能用于其他用途,如总数校验)
            query = "SELECT * FROM article_list"
            cursor.execute(query)
            articles = cursor.fetchall()  # 获取完整数据集

            # 第二步:执行分页查询(实际用于前端展示)
            sql = 'SELECT * FROM article_list LIMIT %s, %s'
            cursor.execute(sql, (start, page_size))
            result = cursor.fetchall()  # 获取当前页数据 

            # 第三步:计算分页总数 
            count_sql = 'SELECT COUNT(tid) AS total FROM article_list'
            cursor.execute(count_sql)
            count_result = cursor.fetchone()
            total_records = count_result['total']
            total_pages = math.ceil(total_records / page_size)
            print(f"总页数:{total_pages}")  # 调试输出 

        except mysql.connector.Error as err:
            print(f"数据库操作错误:{err}")  # 记录错误信息 

    except mysql.connector.Error as err:
        print(f"连接错误:{err}")  # 记录连接异常 

    # 渲染模板时传递的参数说明:
    # articles: 完整数据集(可能用于其他功能)
    # result: 当前页数据 
    # total_records: 总记录数
    # total_pages: 总页数
    # page_size: 每页显示数量 
    # page: 当前页码
    return render_template(
        'list.html',
        articles=articles,
        list=result,
        total_records=total_records,
        total_pages=total_pages,
        page_size=page_size,
        page=page,
    )

然后HTML界面就是使用下面代码的格式把数据渲染出来

{% for article in 传过来的参数 %}
{{article}}
{% endfor %}