Python框架Flask封装和Flask-SQLAlchemy实际应用

2024-04-10 18:16 Python框架Flask封装和Flask-SQLAlchemy实际应用已关闭评论

虽然您的问题提到了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元,扫一扫支付后添加微信提供帮助!(如不能解决您的问题,可以申请退款)

你可能感兴趣的文章

来源:每日教程每日一例,深入学习实用技术教程,关注公众号TeachCourse
转载请注明出处: https://www.teachcourse.cn/3244.html ,谢谢支持!

资源分享

Python高阶函数(map, filter, reduce)示例 Python高阶函数(map, filter,
Python依赖库国内常用镜像源及用法 Python依赖库国内常用镜像源及用
harmony学习PersistentStorage的应用 harmony学习PersistentStorage
python成功发布文章后触发生成sitemap python成功发布文章后触发生成si

评论已关闭!