Flask集成PyMySQL的基础教程

Flask是一个轻量级的Python Web框架,它非常适合快速开发Web应用程序。在构建这些应用时,通常需要与数据库进行交互。PyMySQL是一个使用纯Python编写的MySQL客户端,可以与Flask无缝集成,使得数据的存取变得简单高效。

基础环境搭建

在开始之前,请确保您已安装以下内容:

  • Python 3.x
  • Flask
  • PyMySQL

您可以通过以下命令安装Flask和PyMySQL:

pip install Flask PyMySQL

项目结构

首先,我们需要创建一个Flask项目的基本结构:

/flask_app
    ├── app.py
    └── config.py

配置数据库连接

config.py中,您可以配置数据库连接信息:

# config.py
class Config:
    MYSQL_HOST = 'localhost'
    MYSQL_USER = 'your_username'
    MYSQL_PASSWORD = 'your_password'
    MYSQL_DB = 'your_database'

创建Flask应用

app.py中,我们将创建Flask应用,并集成PyMySQL进行数据操作:

# app.py
from flask import Flask, request, jsonify
import pymysql
from config import Config

app = Flask(__name__)
app.config.from_object(Config)

# 数据库连接
def get_db_connection():
    connection = pymysql.connect(
        host=app.config['MYSQL_HOST'],
        user=app.config['MYSQL_USER'],
        password=app.config['MYSQL_PASSWORD'],
        database=app.config['MYSQL_DB']
    )
    return connection

@app.route('/users', methods=['GET'])
def get_users():
    connection = get_db_connection()
    cursor = connection.cursor(pymysql.cursors.DictCursor)
    
    cursor.execute('SELECT * FROM users')
    users = cursor.fetchall()
    
    cursor.close()
    connection.close()
    
    return jsonify(users)

@app.route('/users', methods=['POST'])
def add_user():
    new_user = request.get_json()
    connection = get_db_connection()
    cursor = connection.cursor()
    
    sql = 'INSERT INTO users (name, age) VALUES (%s, %s)'
    cursor.execute(sql, (new_user['name'], new_user['age']))
    
    connection.commit()
    cursor.close()
    connection.close()
    
    return jsonify(new_user), 201

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

流程图

以下是Flask与PyMySQL之间的数据交互流程图:

flowchart TD
    A[用户请求] -->|GET| B[获取用户数据]
    B --> C[连接数据库]
    C --> D[执行SQL查询]
    D --> E[返回用户数据]
    E --> F[响应用户]
    
    A -->|POST| G[添加用户数据]
    G --> C
    C --> H[执行插入SQL]
    H --> I[提交事务]
    I --> J[响应用户]

交互示例

以下是用户如何通过HTTP请求与Flask应用交互的示例序列图:

sequenceDiagram
    participant User
    participant FlaskApp
    participant MySQL
    
    User->>FlaskApp: GET /users
    FlaskApp->>MySQL: 执行SELECT
    MySQL-->>FlaskApp: 返回用户数据
    FlaskApp-->>User: 返回用户数据
    
    User->>FlaskApp: POST /users
    activate User
    FlaskApp->>MySQL: 执行INSERT
    MySQL-->>FlaskApp: 确认插入
    FlaskApp-->>User: 返回新用户

小结

通过上述示例,我们展示了如何将Flask与PyMySQL结合以便实现基本的数据库操作。借助Flask的路由功能和PyMySQL的简单接口,我们能够快速构建RESTful API,方便前端与数据库的交互。希望这个简要的教程能帮助您顺利开始使用Flask和PyMySQL!