继承 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相关推荐

  1. 【Python】极简单的方式序列化sqlalchemy结果集为JSON

    继承 json.JSONEncoder 实现一个针对sqlalchemy返回类型的处理方式. sqlalchemy的返回类型有大都有两种,一种是Model对象,一种是Query集合(只查询部分字段). ...

  2. netty实现简单的rpc,支持服务集群

    netty实现简单的rpc,支持服务集群 前言 简介 环境准备 Netty 处理器链设计 消费者RPC代理工厂设计 netty rpc消费者核心设计 netty rpc生产者核心设计 服务注册.发现以 ...

  3. Ocelot 入门Demo系列(01-Ocelot极简单Demo及负载均衡的配置)

    来源:https://www.cnblogs.com/7tiny/p/10493805.html [前言] Ocelot是一个用.NET Core实现并且开源的API网关,它功能强大,包括了:路由.请 ...

  4. 服务网关Ocelot 入门Demo系列(01-Ocelot极简单Demo及负载均衡的配置)

    服务网关Ocelot 入门Demo系列(01-Ocelot极简单Demo及负载均衡的配置) 原文:服务网关Ocelot 入门Demo系列(01-Ocelot极简单Demo及负载均衡的配置) [前言] ...

  5. 一个极简单的基于STM32的精确PWM脉冲计数

    一个极简单的精确PWM脉冲计数 基于hal库,直接上代码. void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) {if(pl ...

  6. 一个简单的CNN model,训练集MNIST

    一个简单的CNN model,训练集MNIST 最近学了点机器学习相关的东西,迫不及待跑了一下MNIST,现拿出来分享一下,也算是个记录笔记 一.谈谈我的理解 1.卷积 卷积就像全连接层的权重W,主要 ...

  7. 拼多多的618:用简单的方式反套路

    一年一度的618又要来了. 和往年一样,名义上是618,但活动往往都会提前进行.今年618活动的开始是在5月24日.活动玩法上,今年618与往年并没有太大的差异,无非是满减.红包.裂变.专场优惠.巨额 ...

  8. 服务器单硬盘raid,我们经常说的服务器RAID是什么?简单的方式告诉你

    大家用电脑都知道,电脑上存放资料的地方我们称之为硬盘.而硬盘呢是个极其容易坏掉的东西.而相应的服务器可以简单理解为高级的电脑,比我们平常使用的电脑而言,性能上就必须要有所提升:众所周知,服务器是来架设 ...

  9. 最简单的方式实现一棵二叉树

    使用最简单的方式实现看树写代码C++实现 这段代码之所以能够正常工作,是因为数组元素的地址是常量表达式.我们可以使用这种 标记法定义任何链式结构,但是这种初始化方法难以记住,所以在构建这种结构时很容易 ...

最新文章

  1. python学习之pip常用命令
  2. 5招全面扫描网站页面的质量
  3. 为什么我还没 Fix 你的 Issue
  4. 记录下最近写前端的一些小技巧
  5. 联想 重装系统后F5 F6键无法使用
  6. html5 canvas 不兼容safari浏览器_HTML5的介绍
  7. DCMTK:命令行应用程序修改DICOM文件中的标签
  8. day_work_02
  9. 智能车复工日记【7】:关于会车的图像问题
  10. leetcode197. 上升的温度(SQL)
  11. alientek 3.5寸tftlcd模块资料_电冰箱触摸屏提高设备档次,深圳3.5寸人机界面厂家...
  12. 如何用postman发送post请求
  13. B 站监控系统的框架、演进与展望
  14. 毕设项目 - 基于SSM的药品管理系统(含源码+论文)
  15. BT656跟BT1120和BT709有什么区别
  16. 告别公告_我告别freeCodeCamp
  17. MVC和MVVM框架模式
  18. 大学四年生活总结_大学四年生活总结
  19. 小学计算机课教学设计加教学反思,小学信息技术优秀教学反思
  20. 宕机三个月、36亿打水漂,印度骄傲Infosys如何活成了全球笑话?

热门文章

  1. python if else 必须同时出现吗,Python:Inline if语句else什么也不做
  2. python launcher卸载后蓝屏_误卸载python2.4导致yum不能用后的修复
  3. csr8670 修改key_CSR8670 DFU user guide
  4. python引用函数_python 调用函数
  5. python中创建集合的语句_Python 集合(set) 介绍
  6. C | 构成和编码规范
  7. postgresql 分区视图_PostgreSQL架构集中式到分布式主流架构总结
  8. groovy 字符串截取最后一个_Java基础篇——字符串详解
  9. 宝塔面板php降级,宝塔面板6.8.8降级到5.9.1的方案教程
  10. 【渝粤题库】国家开放大学2021春1374班级管理题目