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
的路由,当用户访问该路径时