极简单的方式序列化sqlalchemy结果集为JSON
2017-07-06 11:00
465 查看
继承 json.JSONEncoder
实现一个针对sqlalchemy返回类型的处理方式。
sqlalchemy的返回类型有大都有两种,一种是Model对象,一种是Query集合(只查询部分字段)。
针对这两种返回结果,都是来自同一中类型 sqlalchemy.orm.query.Query
所以针对Query做相应处理,让他返回一个dict
这样在每次序列化的时候就可以简单的使用
来实现对结果集的json序列化了。
实现一个针对sqlalchemy返回类型的处理方式。
sqlalchemy的返回类型有大都有两种,一种是Model对象,一种是Query集合(只查询部分字段)。
针对这两种返回结果,都是来自同一中类型 sqlalchemy.orm.query.Query
所以针对Query做相应处理,让他返回一个dict
class AlchemyJsonEncoder(json.JSONEncoder): def default(self, obj): # 判断是否是Query if 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] = data except TypeError: record[field] = None fields.append(record) # 返回字典数组 return fields # 其他类型的数据按照默认的方式序列化成JSON return json.JSONEncoder.default(self, obj)
这样在每次序列化的时候就可以简单的使用
json.dumps(result1, cls=AlchemyJsonEncoder)
来实现对结果集的json序列化了。
相关文章推荐
- 【Python】极简单的方式序列化sqlalchemy结果集为JSON
- .NET Framewok 3.5 中 JSON 序列化和反序列化的简单实现
- .NET Framewok 3.5 中 JSON 序列化和反序列化的简单实现
- JsonTools(java Json序列化/反序列化)简单使用
- Newtonsoft.Json序列化日期时间去T的几种方式。
- MVC web api 返回JSON的几种方式,Newtonsoft.Json序列化日期时间去T的几种方式。
- .NET Framewok 3.5 中 JSON 序列化和反序列化的简单实现
- Json.Net学习(1) 实现简单的序列化和反序列化
- 用序列化的方式保存简单的数据类型之积分查询系统的建设
- C#中将查询的结果集使用json序列化并传输后反序列化
- 序列化 SqlAlchemy 的结果为 json 字符串
- .NET Framewok 3.5 中 JSON 序列化和反序列化的简单实现
- asp.net序列化json三种方式 jquery ajax json
- json简单序列化反序列化传值
- 使用json方式上传图片时,发现上传成功后,变成下载了json... 或者无法解析到返回的结果集!!!
- .NET Framewok 3.5 中 JSON 序列化和反序列化的简单实现
- jquery的ajax方式调用json简单例子
- fastjson的简单序列化使用(转)
- 一个简单的把对象序列化/反序列化为json格式的程序
- json 序列化的两种方式