技术文摘
如何将 Flask-SQLAlchemy 查询结果转换为 JSON 格式
在使用 Flask-SQLAlchemy 进行后端开发时,经常需要将数据库查询结果以 JSON 格式返回给前端。那么,如何高效地实现这一转换呢?
我们要了解 Flask-SQLAlchemy 的查询结果形式。它可能是单个模型对象,也可能是对象列表。以一个简单的用户表为例,定义如下模型:
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(50))
email = db.Column(db.String(100))
单个对象转换为 JSON
当查询结果为单个对象时,我们可以通过定义一个方法来将其转换为字典形式,再利用 Flask 内置的 jsonify 函数将字典转换为 JSON 格式。例如:
def user_to_dict(user):
return {
'id': user.id,
'username': user.username,
'email': user.email
}
user = User.query.get(1)
if user:
from flask import jsonify
result = jsonify(user_to_dict(user))
print(result)
多个对象转换为 JSON
如果查询结果是多个用户对象的列表,我们需要遍历列表,将每个对象都转换为字典,再把这些字典放入一个新的列表中,最后转换为 JSON。代码如下:
users = User.query.all()
user_list = []
for user in users:
user_dict = {
'id': user.id,
'username': user.username,
'email': user.email
}
user_list.append(user_dict)
result = jsonify(user_list)
print(result)
使用 Marshmallow 进行更复杂的转换
对于更复杂的数据库模型关系,比如用户有多个关联的订单,使用 Marshmallow 库会更加方便。Marshmallow 提供了序列化和反序列化的功能。
首先安装 Marshmallow:pip install marshmallow
然后定义一个 Schema:
from marshmallow import Schema, fields
class UserSchema(Schema):
id = fields.Integer()
username = fields.String()
email = fields.String()
使用 Schema 进行转换:
users = User.query.all()
schema = UserSchema(many=True)
result = schema.dump(users)
print(result)
通过上述方法,无论是简单的单个对象还是复杂的对象关系,都能轻松地将 Flask-SQLAlchemy 的查询结果转换为 JSON 格式,满足前后端数据交互的需求。 掌握这些技巧,能有效提升开发效率,让后端数据传输更加顺畅。
TAGS: JSON格式 Flask开发 Flask-SQLAlchemy 查询结果转换
- 2021 年 TIOBE 9 月榜单公布:Python 距 C 仅 0.16%,或冲击冠军!
- 云原生大数据架构里实时计算维表与结果表的选型实践
- 学会使用 Go 语言 Modules,一篇文章就够
- HarmonyOS 服务卡片之残奥会卡片
- HarmonyOS JS UI 自定义 Icon 组件
- 别再只用 map.put 啦!Java 8 compute 让 Map 操作更便捷
- GitHub 爆火!Python 程序大全即将走红
- 学习这门语言两月,仍困于加减乘除
- 版本历史与代码示例:WebSocket、JSTL
- HarmonyOS 示例中的 TaskDispatcher 线程管理
- 浅析慢速二次算法和快速 HashMap
- Spring Boot 中 Filter 的正确使用方法
- Polytree 随想录
- 深入理解 Node.js 的 Fs 模块:共同设计文件系统
- No.js 模块加载器的实现之篇