欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

极简单的方式序列化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的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。