Flask MySQL 数据上传下载

Flask 是一个基于 Python 的轻量级 Web 框架,它提供了简单易用的方式来构建 Web 应用程序。MySQL 是一个常用的关系型数据库,用于存储和管理数据。在本文中,我们将介绍如何在 Flask 中使用 MySQL 数据库进行数据上传和下载。

配置 MySQL 数据库

在开始之前,我们需要先配置 MySQL 数据库。请确保已经安装了 MySQL,并创建了一个数据库和一个表用于存储数据。

CREATE DATABASE flask_mysql;
USE flask_mysql;
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50),
    email VARCHAR(50)
);

安装 Flask 和 MySQL 驱动

在代码编写之前,我们需要安装 Flask 和 MySQL 驱动。可以使用以下命令进行安装:

pip install flask
pip install flask-mysql

连接 MySQL 数据库

在 Flask 中连接 MySQL 数据库非常简单。首先,创建一个名为 app.py 的 Python 文件,并添加以下代码:

from flask import Flask, render_template, request
from flask_mysqldb import MySQL

app = Flask(__name__)

# 连接 MySQL 数据库
app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'root'
app.config['MYSQL_PASSWORD'] = 'password'
app.config['MYSQL_DB'] = 'flask_mysql'

mysql = MySQL(app)

上述代码创建了一个 Flask 应用程序对象,然后配置了 MySQL 数据库的连接信息。

数据上传

接下来,我们将演示如何在 Flask 中实现数据上传功能。首先,我们需要创建一个 HTML 表单,用户可以在其中输入数据。

<!-- templates/upload.html -->
<!DOCTYPE html>
<html>
<head>
    <title>数据上传</title>
</head>
<body>
    数据上传
    <form method="POST" action="/upload" enctype="multipart/form-data">
        <label for="name">姓名:</label>
        <input type="text" name="name" id="name"><br><br>
        <label for="email">邮箱:</label>
        <input type="email" name="email" id="email"><br><br>
        <input type="submit" value="上传">
    </form>
</body>
</html>

上述代码创建了一个简单的数据上传表单,用于输入姓名和邮箱。

接下来,我们需要在 Flask 中创建一个路由,用于处理上传请求并将数据保存到 MySQL 数据库中。

# app.py

@app.route('/upload', methods=['GET', 'POST'])
def upload():
    if request.method == 'POST':
        name = request.form['name']
        email = request.form['email']

        cur = mysql.connection.cursor()
        cur.execute("INSERT INTO users (name, email) VALUES (%s, %s)", (name, email))
        mysql.connection.commit()
        cur.close()

        return '数据上传成功!'

    return render_template('upload.html')

上述代码定义了一个名为 /upload 的路由,当用户提交表单时,将从表单中提取姓名和邮箱,并将其插入到 MySQL 数据库中。

数据下载

我们还可以实现数据下载的功能,即从 MySQL 数据库中检索数据并显示在网页上。首先,我们需要创建一个 HTML 页面,用于显示数据库中的数据。

<!-- templates/download.html -->
<!DOCTYPE html>
<html>
<head>
    <title>数据下载</title>
</head>
<body>
    数据下载
    <table>
        <tr>
            <th>ID</th>
            <th>姓名</th>
            <th>邮箱</th>
        </tr>
        {% for user in users %}
        <tr>
            <td>{{ user[0] }}</td>
            <td>{{ user[1] }}</td>
            <td>{{ user[2] }}</td>
        </tr>
        {% endfor %}
    </table>
</body>
</html>

上述代码创建了一个 HTML 表格,用于显示数据库中的数据。使用 Flask 的模板引擎,我们可以在 HTML 页面中插入动态内容。

接下来,我们需要在 Flask 中创建一个路由,用于处理数据下载请求并从 MySQL 数据库中检索数据。

# app.py

@app.route('/download')
def download():
    cur = mysql.connection.cursor()
    cur.execute("SELECT * FROM users")
    users = cur.fetchall()
    cur.close()

    return render_template('download.html', users=users)

上述代码定义了一个名为 /download 的路由,当用户访问该路径时