Python Flask 连接 MySQL 的完整指南
Flask 是一个轻量级的 Web 框架,广泛应用于开发小型和中型 web 应用。与数据库进行有效的交互是 Web 开发中的重要组成部分,而 MySQL 作为一种流行的关系型数据库,常常与 Flask 一起使用。在本文中,我们将介绍如何在 Flask 中连接 MySQL,并通过一个示例应用来演示完整的流程。
环境准备
在开始编码之前,需要确保安装了以下软件:
- Python: 推荐使用 Python 3.6 或以上版本。
- Flask: 使用以下命令安装 Flask:
pip install Flask
- Flask-MySQLdb: 用于在 Flask 中连接 MySQL:
pip install Flask-MySQLdb
- MySQL Server: 确保你的机器上安装了 MySQL,并且可以访问数据库。
数据库设置
首先,我们需要在 MySQL 中创建一个数据库和一个简单的表格。打开 MySQL 客户端,并输入以下命令:
CREATE DATABASE flask_db;
USE flask_db;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
age INT NOT NULL
);
这个表格将用于存储用户的姓名和年龄。
Flask 应用程序结构
在我们代码的结构上,建议创建如下的目录结构:
/your_project
├── app.py
└── requirements.txt
在 requirements.txt
文件中,记录你项目所用到的库,以便于后期使用 pip install -r requirements.txt
安装依赖。
编写 Flask 应用
接下来,我们在 app.py
文件中编写代码。以下是一个简单的 Flask 应用,它能够连接到 MySQL 数据库、插入数据和查询数据。
from flask import Flask, request, jsonify
from flask_mysqldb import MySQL
app = Flask(__name__)
# MySQL 配置
app.config['MYSQL_HOST'] = 'localhost' # MySQL 服务器地址
app.config['MYSQL_USER'] = 'your_user' # MySQL 用户名
app.config['MYSQL_PASSWORD'] = 'your_password' # MySQL 密码
app.config['MYSQL_DB'] = 'flask_db' # 数据库名称
mysql = MySQL(app)
@app.route('/add_user', methods=['POST'])
def add_user():
name = request.json['name']
age = request.json['age']
cur = mysql.connection.cursor()
cur.execute("INSERT INTO users (name, age) VALUES (%s, %s)", (name, age))
mysql.connection.commit()
cur.close()
return jsonify({'message': 'User added successfully!'}), 201
@app.route('/get_users', methods=['GET'])
def get_users():
cur = mysql.connection.cursor()
cur.execute("SELECT * FROM users")
rows = cur.fetchall()
cur.close()
users = []
for row in rows:
users.append({'id': row[0], 'name': row[1], 'age': row[2]})
return jsonify(users), 200
if __name__ == '__main__':
app.run(debug=True)
在这段代码中,我们完成了以下几项工作:
- 设置了 Flask 应用和 MySQL 数据库的连接配置。
- 定义了一个
/add_user
路由,用于添加用户到数据库。 - 定义了一个
/get_users
路由,用于获取所有用户的信息。
流程图
以下是应用程序的基本流程图,用于说明请求的处理过程:
flowchart TD
A[用户请求数据] --> B{请求类型}
B -->|POST| C[调用 add_user]
B -->|GET| D[调用 get_users]
C --> E[执行 INSERT 语句]
D --> F[执行 SELECT 语句]
E --> G[返回成功信息]
F --> H[返回用户列表]
运行 Flask 应用
在终端中,导航到你的项目目录,使用以下命令启动 Flask 应用:
python app.py
应用开始运行后,你可以使用 Postman 或 curl 等工具来测试 API。
添加用户示例
curl -X POST -H "Content-Type: application/json" -d '{"name": "Alice", "age": 30}'
获取用户列表示例
curl -X GET
如果一切顺利,发送到 /add_user
的 POST 请求将会在数据库中插入新用户,而发送到 /get_users
的 GET 请求则会返回所有用户的列表。
结论
在本文中,我们介绍了如何在 Flask 应用中连接 MySQL 数据库。通过简单的示例,我们实现了用户的添加和查询功能。Flask 和 MySQL 的结合非常适合快速开发小型 Web 应用。
希望这篇文章能帮助你理解 Flask 与 MySQL 的连接,以及如何使用它们来创建功能丰富的 Web 应用。你可以根据实际需要扩展此应用,添加更多功能,例如数据验证、错误处理等。