Python Flask 连接 MySQL 的完整指南

Flask 是一个轻量级的 Web 框架,广泛应用于开发小型和中型 web 应用。与数据库进行有效的交互是 Web 开发中的重要组成部分,而 MySQL 作为一种流行的关系型数据库,常常与 Flask 一起使用。在本文中,我们将介绍如何在 Flask 中连接 MySQL,并通过一个示例应用来演示完整的流程。

环境准备

在开始编码之前,需要确保安装了以下软件:

  1. Python: 推荐使用 Python 3.6 或以上版本。
  2. Flask: 使用以下命令安装 Flask:
    pip install Flask
    
  3. Flask-MySQLdb: 用于在 Flask 中连接 MySQL:
    pip install Flask-MySQLdb
    
  4. 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 应用。你可以根据实际需要扩展此应用,添加更多功能,例如数据验证、错误处理等。