如何用Python构建API实现MySQL数据库查询?
搭建Python查询数据库API的实用指南
嘿,你已经搞定了数据库连接和数据提取这最关键的一步,接下来搭API其实没那么复杂!我自己平时做项目常用两个工具,上手快、生态成熟,给你详细讲讲:
推荐工具1:FastAPI(首推,现代、高效)
FastAPI是目前Python生态里最火的API框架之一,自带自动生成的交互文档,性能接近Node.js和Go,对新手友好度拉满。
步骤1:安装依赖
打开终端跑这行命令:
pip install fastapi uvicorn
fastapi是核心框架,uvicorn是用来运行API的ASGI服务器。
步骤2:写基础API代码
把你已有的数据库查询逻辑整合进去就行,举个简单例子:
from fastapi import FastAPI import 你的数据库连接模块 # 比如你自己写的db_connect.py app = FastAPI(title="数据库查询API") # 示例:根据用户ID查询数据 @app.get("/query/user/{user_id}") def get_user_data(user_id: int): # 这里调用你已经写好的数据库查询函数 query_result = 你的数据库查询函数(user_id) if query_result: return {"status": "success", "data": query_result} else: return {"status": "error", "message": "未找到对应数据"} # 示例:带参数的模糊查询(比如按用户名) @app.get("/query/user/search") def search_user(username: str): query_result = 你的模糊查询函数(username) return {"status": "success", "data": query_result}
步骤3:运行API
终端跑:
uvicorn main:app --reload
main是你的文件名(比如main.py),--reload是开发模式下自动重载代码。
额外福利
启动后访问 http://127.0.0.1:8000/docs,就能看到自动生成的交互文档,直接在网页上测试API,不用写额外的测试代码!
推荐工具2:Flask(轻量、灵活)
如果你喜欢更轻量的框架,Flask是经典选择,生态非常完善,适合快速原型开发。
步骤1:安装依赖
pip install flask
步骤2:写基础API代码
同样整合你的数据库逻辑:
from flask import Flask, jsonify, request import 你的数据库连接模块 app = Flask(__name__) @app.route("/query/user/<int:user_id>", methods=["GET"]) def get_user_data(user_id): query_result = 你的数据库查询函数(user_id) if query_result: return jsonify({"status": "success", "data": query_result}) else: return jsonify({"status": "error", "message": "未找到对应数据"}), 404 @app.route("/query/user/search", methods=["GET"]) def search_user(): username = request.args.get("username") if not username: return jsonify({"status": "error", "message": "请提供username参数"}), 400 query_result = 你的模糊查询函数(username) return jsonify({"status": "success", "data": query_result}) if __name__ == "__main__": app.run(debug=True)
步骤3:运行API
直接运行你的脚本,比如python main.py,访问http://127.0.0.1:5000就能测试。
关键注意事项
- 防止SQL注入:绝对不要用字符串拼接SQL语句!一定要用数据库驱动的参数化查询(比如
cursor.execute("SELECT * FROM users WHERE id = %s", (user_id,))这种格式),你的数据库连接代码里应该已经处理了,但务必再检查一遍。 - 错误处理:可以加更多异常捕获,比如数据库连接失败、参数格式错误等,返回清晰的错误信息和HTTP状态码(比如400参数错误、500服务器错误)。
- 权限控制:如果API需要限制访问,可以加API Key验证或者OAuth2,FastAPI和Flask都有对应的扩展(比如FastAPI的
OAuth2PasswordBearer,Flask的Flask-HTTPAuth)。 - 部署上线:开发模式跑起来后,生产环境建议用更稳定的服务器,比如FastAPI用
gunicorn+uvicorn,Flask用gunicorn+flask,再配合Nginx做反向代理,或者直接部署到云平台。
内容的提问来源于stack exchange,提问作者user9764822
相关产品推荐
相关产品推荐

