当前位置:
首页 >
极简单的方式序列化sqlalchemy结果集为JSON
发布时间:2023/12/2
55
豆豆
生活随笔
收集整理的这篇文章主要介绍了
极简单的方式序列化sqlalchemy结果集为JSON
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
继承 json.JSONEncoder
实现一个针对sqlalchemy返回类型的处理方式。
sqlalchemy的返回类型有大都有两种,一种是Model对象,一种是Query集合(只查询部分字段)。
针对这两种返回结果,都是来自同一中类型 sqlalchemy.orm.query.Query
所以针对Query做相应处理,让他返回一个dict
class AlchemyJsonEncoder(json.JSONEncoder):def default(self, obj):# 判断是否是Queryif isinstance(obj, Query):# 定义一个字典数组fields = []# 定义一个字典对象record = {}# 检索结果集的行记录for rec in obj.all():# 检索记录中的成员for field in [x for x in dir(rec) if# 过滤属性not x.startswith('_')# 过滤掉方法属性and hasattr(rec.__getattribute__(x), '__call__') == False# 过滤掉不需要的属性and x != 'metadata']:data = rec.__getattribute__(field)try:record[field] = dataexcept TypeError:record[field] = Nonefields.append(record)# 返回字典数组return fields# 其他类型的数据按照默认的方式序列化成JSONreturn json.JSONEncoder.default(self, obj)
这样在每次序列化的时候就可以简单的使用
json.dumps(result1, cls=AlchemyJsonEncoder)来实现对结果集的json序列化了。
转载于:https://www.cnblogs.com/StupidsCat/p/7125233.html
总结
以上是生活随笔为你收集整理的极简单的方式序列化sqlalchemy结果集为JSON的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 公章用了多年了未备案行吗?
- 下一篇: 用原生JS读写CSS样式的方法总结