使用 Flask 和 MySQL 进行数据库查询

Flask 是一个轻量级的 Python web 框架,非常适合构建小型的web应用。在许多场景下,我们需要将 Flask 与 MySQL 数据库结合使用,以实现数据的增、删、改、查操作。本文将介绍如何通过 Flask 连接 MySQL 数据库并进行简单查询,包含代码示例和相关的类图、甘特图。

环境准备

在开始编写代码之前,我们需要安装几个必需的软件包。首先,确保已经安装了 Python 和 pip,然后使用以下命令安装 Flask 和 MySQL 相关库:

pip install Flask Flask-MySQLdb Flask-SQLAlchemy

你也需要安装 MySQL 数据库软件,并创建一个数据库,例如名为 test_db,并在其中创建一张表,执行以下 SQL 脚本:

CREATE DATABASE test_db;

USE test_db;

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    age INT
);

插入一些示例数据:

INSERT INTO users (name, age) VALUES ('Alice', 30), ('Bob', 25);

Flask 项目结构

创建一个简单的 Flask 项目结构:

flask_mysql_app/
│
├── app.py
└── requirements.txt

Flask 应用实现

接下来,编写 app.py,连接到 MySQL 并查询数据。

from flask import Flask, jsonify
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://username:password@localhost/test_db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLAlchemy(app)

class User(db.Model):
    __tablename__ = 'users'
    
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100))
    age = db.Column(db.Integer)

@app.route('/users', methods=['GET'])
def get_users():
    users = User.query.all()
    return jsonify([{'id': user.id, 'name': user.name, 'age': user.age} for user in users])

if __name__ == '__main__':
    app.run(debug=True)

代码解析

  1. Flask 实例化:我们通过 Flask(__name__) 创建 Flask 实例,并配置数据库连接。
  2. SQLAlchemy 模型:定义 User 类与数据库的 users 表映射,包含 id、name 和 age 字段。
  3. 路由与视图函数:定义 /users 路由,使用 User.query.all() 查询所有用户数据,并返回 JSON 格式的响应。

测试应用

运行 Flask 应用:

python app.py

在浏览器或 API 客户端中访问 ` JSON 格式的用户列表。

类图

为了更清晰地展示我们的代码结构,以下是对应的类图:

classDiagram
    class User {
        -int id
        -String name
        -int age
        +int getId()
        +String getName()
        +int getAge()
    }

甘特图

接下来,我们展示一下这个项目开发过程中的时间安排,使用甘特图表示各个阶段的时间。

gantt
    title Flask MySQL App Development Schedule
    dateFormat  YYYY-MM-DD
    section Project Setup
    Install Python Packages:done, 2023-10-01, 1d
    Create Database:done, 2023-10-01, 1d
    section Development
    Implement User Model:done, 2023-10-02, 2d
    Create Flask Routes:done, 2023-10-04, 1d
    section Testing
    Write Unit Tests: 2023-10-05, 2d
    Deploy to Server: 2023-10-07, 1d

结论

通过以上示例,我们可以看到,使用 Flask 和 MySQL 来创建一个简单的web应用是非常直观和容易的。我们不仅可以用 Flask 实现路由和应用逻辑,还可以通过 SQLAlchemy 来简化数据库操作。

这个框架的灵活性使得我们可以快速地构建和扩展应用。虽然本示例中只实现了基本的查询,但利用 Flask 和 SQLAlchemy,完全可以轻松实现更复杂的数据库操作。例如,您可以通过增加 POST、PUT、DELETE 等 HTTP 方法来实现用户数据的增、删、改功能。

无论是开发小型应用,还是大型项目,Flask 和 MySQL 的组合都是一个强有力的选择。希望本文能为你在 Flask 和 MySQL 的开发过程中提供帮助和指引!