Flask+MySQL构建RESTful API全攻略
Flask 与 MySQL 数据库集成完整的 RESTful API 实现指南本文将详细介绍如何使用 Flask 框架与 MySQL 数据库集成构建一个完整的 RESTful API。涵盖环境配置、数据库连接、模型定义、路由设计以及 CRUD 操作实现。环境准备与依赖安装确保已安装 Python 3.x 和 MySQL 数据库。通过以下命令安装必要的 Python 库pip install flask flask-mysqldb flask-restfulFlask-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, typestr, requiredTrue) parser.add_argument(email, typestr, requiredTrue) 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(debugTrue)路由设计说明POST /user创建新用户。GET /user/user_id获取指定用户信息。PUT /user/user_id更新用户信息。DELETE /user/user_id删除用户。测试 API 接口使用 Postman 或 cURL 测试 API 功能创建用户POSTcurl -X POST -H Content-Type: application/json -d {username:john, email:johnexample.com} http://localhost:5000/user获取用户GETcurl http://localhost:5000/user/1更新用户PUTcurl -X PUT -H Content-Type: application/json -d {username:john_updated, email:john_newexample.com} http://localhost:5000/user/1删除用户DELETEcurl -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 帮助器