技术文摘
如何将 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 查询结果转换
- Zabbix 远程主机脚本或指令执行全解析
- Zabbix 远程执行命令示例的详细解析
- Zabbix 4.04 安装详解教程(基于 CentOS 7.6)
- Netty 实现 Tomcat 的示例代码展示
- Zabbix 密码重置秘籍(一步搞定)
- Keytool 配置 Tomcat 的 HTTPS 双向认证相关问题
- CVE-2020-1983:Tomcat 文件包含漏洞相关问题
- Zabbix 实现钉钉带图片报警功能配置
- Tomcat 进程假死的排查
- Tomcat 访问日志与线程数配置的实现流程
- Tomcat 中部署 Jenkins 的实现途径
- Zabbix 3.4 对 mongodb 数据库状态的监控方法
- Tomcat 正常启动网页无法访问的解决办法
- Zabbix 中获取所有主机 IP 和主机名的实例代码
- Zabbix Redis 自动发现端口脚本的 JSON 格式返回