虽然您的问题提到了PHP,但我理解您希望看到的是在Python Flask中使用MySQL查询并将结果以统一格式返回的例子。这里我们将结合之前提到的响应格式封装和MySQL查询:
首先,确保已经安装了Flask和Flask-SQLAlchemy:
pip install flask flask-sqlalchemy pymysql
然后,您可以创建一个数据库操作类,并在其中封装MySQL查询,最后通过统一的响应格式返回查询结果:
from flask import Flask, jsonify, make_response
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://username:password@localhost/dbname'
db = SQLAlchemy(app)
# 定义统一响应格式
def wrap_response(data=None, error=None, status_code=200):
response_dict = {
"status": "success" if error is None else "error",
"data": data,
"message": error if error else "",
}
return make_response(jsonify(response_dict), status_code)
# 假设我们有一个User模型
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
# 数据库操作类
class DatabaseService:
@staticmethod
def fetch_all_users():
try:
users = User.query.all()
return [user.to_dict() for user in users] # 假设to_dict是User模型的一个方法,用于转换为字典
except Exception as e:
return wrap_response(error=f"Failed to fetch users: {str(e)}", status_code=500)
# 查询所有用户并返回
@app.route('/api/users', methods=['GET'])
def get_all_users():
users_data = DatabaseService.fetch_all_users()
if isinstance(users_data, dict): # 如果返回的是一个包含错误信息的响应字典
return users_data
else:
return wrap_response(data=users_data)
if __name__ == '__main__':
app.run(debug=True)
在这个例子中,我们创建了一个DatabaseService
类,其中fetch_all_users
方法负责执行MySQL查询并获取所有用户数据。如果查询过程中出现任何异常,该方法会直接返回一个带有错误信息的响应。若查询成功,则将用户数据转化为统一格式的响应并返回。在/api/users
路由的视图函数中,我们调用了DatabaseService.fetch_all_users
方法并返回其结果。
当前文章价值3.99元,扫一扫支付后添加微信提供帮助!(如不能解决您的问题,可以申请退款)
你可能感兴趣的文章
分类:python
标签:flask, flask sqlalchemy, flask 封装
评论已关闭!