news 2026/5/5 15:23:42

Flask+MySQL构建RESTful API全攻略

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Flask+MySQL构建RESTful API全攻略

Flask 与 MySQL 数据库集成:完整的 RESTful API 实现指南

本文将详细介绍如何使用 Flask 框架与 MySQL 数据库集成,构建一个完整的 RESTful API。涵盖环境配置、数据库连接、模型定义、路由设计以及 CRUD 操作实现。


环境准备与依赖安装

确保已安装 Python 3.x 和 MySQL 数据库。通过以下命令安装必要的 Python 库:

pip install flask flask-mysqldb flask-restful

Flask-MySQLdb 是 Flask 的 MySQL 扩展,用于简化数据库连接操作。Flask-RESTful 用于快速构建 RESTful API。


初始化 Flask 应用

创建一个名为app.py的文件,初始化 Flask 应用并配置 MySQL 连接:

from flask import Flask from flask_mysqldb import MySQL from flask_restful import Resource, Api app = Flask(__name__) api = Api(app) # MySQL 配置 app.config['MYSQL_HOST'] = 'localhost' app.config['MYSQL_USER'] = 'root' app.config['MYSQL_PASSWORD'] = 'your_password' app.config['MYSQL_DB'] = 'flask_api' mysql = MySQL(app)

确保替换your_password为实际的 MySQL 密码,并提前创建名为flask_api的数据库。


定义数据模型

假设需要构建一个简单的用户管理 API,定义一个User模型。在 MySQL 中创建表:

CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, email VARCHAR(100) NOT NULL );

在 Flask 中通过 Python 类表示该模型:

class User: def __init__(self, id, username, email): self.id = id self.username = username self.email = email

实现 RESTful API 路由

使用 Flask-RESTful 定义资源类,实现 CRUD 操作。以下是完整的UserResource类示例:

from flask_restful import reqparse parser = reqparse.RequestParser() parser.add_argument('username', type=str, required=True) parser.add_argument('email', type=str, required=True) class UserResource(Resource): def get(self, user_id): cur = mysql.connection.cursor() cur.execute("SELECT * FROM users WHERE id = %s", (user_id,)) data = cur.fetchone() cur.close() if {'id': data[0], 'username': data[1], 'email': data[2]}, 200 return {'message': 'User not found'}, 404 def post(self): args = parser.parse_args() cur = mysql.connection.cursor() cur.execute( "INSERT INTO users (username, email) VALUES (%s, %s)", (args['username'], args['email']) ) mysql.connection.commit() user_id = cur.lastrowid cur.close() return {'id': user_id, 'username': args['username'], 'email': args['email']}, 201 def put(self, user_id): args = parser.parse_args() cur = mysql.connection.cursor() cur.execute( "UPDATE users SET username = %s, email = %s WHERE id = %s", (args['username'], args['email'], user_id) ) mysql.connection.commit() cur.close() return {'id': user_id, 'username': args['username'], 'email': args['email']}, 200 def delete(self, user_id): cur = mysql.connection.cursor() cur.execute("DELETE FROM users WHERE id = %s", (user_id,)) mysql.connection.commit() cur.close() return {'message': 'User deleted'}, 200

注册路由并启动应用

UserResource绑定到路由,并启动 Flask 开发服务器:

api.add_resource(UserResource, '/user', '/user/<int:user_id>') if __name__ == '__main__': app.run(debug=True)

路由设计说明:

  • POST /user:创建新用户。
  • GET /user/<user_id>:获取指定用户信息。
  • PUT /user/<user_id>:更新用户信息。
  • DELETE /user/<user_id>:删除用户。

测试 API 接口

使用 Postman 或 cURL 测试 API 功能:

创建用户(POST)

curl -X POST -H "Content-Type: application/json" -d '{"username":"john", "email":"john@example.com"}' http://localhost:5000/user

获取用户(GET)

curl http://localhost:5000/user/1

更新用户(PUT)

curl -X PUT -H "Content-Type: application/json" -d '{"username":"john_updated", "email":"john_new@example.com"}' http://localhost:5000/user/1

删除用户(DELETE)

curl -X DELETE http://localhost:5000/user/1

错误处理与验证

增强 API 的健壮性,添加输入验证和错误处理:

class UserResource(Resource): def post(self): try: args = parser.parse_args() if not args['username'] or not args['email']: return {'message': 'Username and email are required'}, 400 # 其余逻辑... except Exception as e: return {'message': str(e)}, 500

总结

通过以上步骤,完成了 Flask 与 MySQL 集成的 RESTful API 实现。关键点包括:

  • 使用 Flask-MySQLdb 管理数据库连接。
  • 通过 Flask-RESTful 快速构建资源类。
  • 实现标准的 CRUD 操作和 HTTP 方法。

扩展方向:

  • 添加 JWT 认证。
  • 分页查询支持。
  • 更复杂的数据模型关联。

相关阅读:- Transformer实战(20)——微调Transformer语言模型进行问答任务
相关阅读:- 数模之路获奖总结——数据分析交流(R语言)
相关阅读:- 依赖注入的好处和不用依赖注入的对比
相关阅读:- GB_Z 41275.X-2023《航空电子过程管理 含无铅焊料航空航天及国防电子系统
相关阅读:- MVC HTML 帮助器

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/5 15:21:26

项目ssss

ab

作者头像 李华
网站建设 2026/5/5 15:19:27

深度解析GroundingDINO:跨模态目标检测的前沿突破

深度解析GroundingDINO&#xff1a;跨模态目标检测的前沿突破 【免费下载链接】GroundingDINO [ECCV 2024] Official implementation of the paper "Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection" 项目地址: https://…

作者头像 李华
网站建设 2026/5/5 15:18:57

Defender Control:完全掌控Windows Defender的终极免费开源工具

Defender Control&#xff1a;完全掌控Windows Defender的终极免费开源工具 【免费下载链接】defender-control An open-source windows defender manager. Now you can disable windows defender permanently. 项目地址: https://gitcode.com/gh_mirrors/de/defender-contr…

作者头像 李华
网站建设 2026/5/5 15:18:11

PCL2启动器如何通过.NET架构革新Minecraft启动体验?

PCL2启动器如何通过.NET架构革新Minecraft启动体验&#xff1f; 【免费下载链接】PCL Minecraft 启动器 Plain Craft Launcher&#xff08;PCL&#xff09;。 项目地址: https://gitcode.com/gh_mirrors/pc/PCL 在Minecraft玩家社区中&#xff0c;启动器不仅是游戏入口&…

作者头像 李华
网站建设 2026/5/5 15:18:04

50kW 光储一体机 功率回路硬件设计报告(四)

第七章 EMI/EMC设计 7.1 适用标准与限值 系统需满足EN 55011 Class A传导与辐射发射限值,并具备IEC 61000-4系列抗扰度Level 3。 7.2 噪声源与传播路径 主要噪声源:PV Boost (16kHz)、电池Buck-Boost (16kHz)、TNPC逆变桥 (16kHz及边带谐波)。共模噪声通过功率器件散热器…

作者头像 李华
网站建设 2026/5/5 15:17:41

为小型创业团队统一配置 Taotoken CLI 以提升开发效率

为小型创业团队统一配置 Taotoken CLI 以提升开发效率 1. 小型团队的模型接入痛点 在小型创业团队中&#xff0c;技术负责人常面临模型接入标准不统一的问题。每位开发者可能自行配置不同的 API Key、模型版本或接入端点&#xff0c;导致项目代码难以维护&#xff0c;调用成本…

作者头像 李华