Flask-SQLAlchemy查询结果转JSON的方法

2025-01-09 01:04:29   小编

Flask-SQLAlchemy查询结果转JSON的方法

在使用Flask进行Web开发时,常常会结合SQLAlchemy来操作数据库。而将查询结果转换为JSON格式是一个常见的需求,因为JSON是一种轻量级的数据交换格式,易于在前端和后端之间传递数据。下面将介绍几种将Flask-SQLAlchemy查询结果转JSON的方法。

方法一:手动构建JSON对象

可以通过遍历查询结果,手动构建一个字典,然后使用Python的json模块将其转换为JSON格式。例如:

from flask import Flask, jsonify
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] ='sqlite:///test.db'
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80))

@app.route('/users')
def get_users():
    users = User.query.all()
    result = []
    for user in users:
        user_data = {'id': user.id, 'name': user.name}
        result.append(user_data)
    return jsonify(result)

方法二:使用自定义函数

定义一个函数来将模型对象转换为字典,然后再将字典转换为JSON。这样可以提高代码的复用性。

def to_dict(model):
    return {c.name: getattr(model, c.name) for c in model.__table__.columns}

@app.route('/users')
def get_users():
    users = User.query.all()
    result = [to_dict(user) for user in users]
    return jsonify(result)

方法三:使用第三方库

有一些第三方库可以更方便地将SQLAlchemy查询结果转换为JSON,如marshmallow。它提供了强大的序列化和反序列化功能。

首先安装marshmallowpip install marshmallow

然后定义一个模式:

from marshmallow import Schema, fields

class UserSchema(Schema):
    id = fields.Int()
    name = fields.Str()

user_schema = UserSchema()
users_schema = UserSchema(many=True)

@app.route('/users')
def get_users():
    users = User.query.all()
    result = users_schema.dump(users)
    return jsonify(result)

通过以上方法,就可以轻松地将Flask-SQLAlchemy查询结果转换为JSON格式,满足前后端数据交互的需求。

TAGS: 方法技巧 查询结果 JSON转换 Flask-SQLAlchemy

欢迎使用万千站长工具!

Welcome to www.zzTool.com