极简单的方式序列化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相关推荐
- 【Python】极简单的方式序列化sqlalchemy结果集为JSON
继承 json.JSONEncoder 实现一个针对sqlalchemy返回类型的处理方式. sqlalchemy的返回类型有大都有两种,一种是Model对象,一种是Query集合(只查询部分字段). ...
- netty实现简单的rpc,支持服务集群
netty实现简单的rpc,支持服务集群 前言 简介 环境准备 Netty 处理器链设计 消费者RPC代理工厂设计 netty rpc消费者核心设计 netty rpc生产者核心设计 服务注册.发现以 ...
- Ocelot 入门Demo系列(01-Ocelot极简单Demo及负载均衡的配置)
来源:https://www.cnblogs.com/7tiny/p/10493805.html [前言] Ocelot是一个用.NET Core实现并且开源的API网关,它功能强大,包括了:路由.请 ...
- 服务网关Ocelot 入门Demo系列(01-Ocelot极简单Demo及负载均衡的配置)
服务网关Ocelot 入门Demo系列(01-Ocelot极简单Demo及负载均衡的配置) 原文:服务网关Ocelot 入门Demo系列(01-Ocelot极简单Demo及负载均衡的配置) [前言] ...
- 一个极简单的基于STM32的精确PWM脉冲计数
一个极简单的精确PWM脉冲计数 基于hal库,直接上代码. void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) {if(pl ...
- 一个简单的CNN model,训练集MNIST
一个简单的CNN model,训练集MNIST 最近学了点机器学习相关的东西,迫不及待跑了一下MNIST,现拿出来分享一下,也算是个记录笔记 一.谈谈我的理解 1.卷积 卷积就像全连接层的权重W,主要 ...
- 拼多多的618:用简单的方式反套路
一年一度的618又要来了. 和往年一样,名义上是618,但活动往往都会提前进行.今年618活动的开始是在5月24日.活动玩法上,今年618与往年并没有太大的差异,无非是满减.红包.裂变.专场优惠.巨额 ...
- 服务器单硬盘raid,我们经常说的服务器RAID是什么?简单的方式告诉你
大家用电脑都知道,电脑上存放资料的地方我们称之为硬盘.而硬盘呢是个极其容易坏掉的东西.而相应的服务器可以简单理解为高级的电脑,比我们平常使用的电脑而言,性能上就必须要有所提升:众所周知,服务器是来架设 ...
- 最简单的方式实现一棵二叉树
使用最简单的方式实现看树写代码C++实现 这段代码之所以能够正常工作,是因为数组元素的地址是常量表达式.我们可以使用这种 标记法定义任何链式结构,但是这种初始化方法难以记住,所以在构建这种结构时很容易 ...
最新文章
- python学习之pip常用命令
- 5招全面扫描网站页面的质量
- 为什么我还没 Fix 你的 Issue
- 记录下最近写前端的一些小技巧
- 联想 重装系统后F5 F6键无法使用
- html5 canvas 不兼容safari浏览器_HTML5的介绍
- DCMTK:命令行应用程序修改DICOM文件中的标签
- day_work_02
- 智能车复工日记【7】:关于会车的图像问题
- leetcode197. 上升的温度(SQL)
- alientek 3.5寸tftlcd模块资料_电冰箱触摸屏提高设备档次,深圳3.5寸人机界面厂家...
- 如何用postman发送post请求
- B 站监控系统的框架、演进与展望
- 毕设项目 - 基于SSM的药品管理系统(含源码+论文)
- BT656跟BT1120和BT709有什么区别
- 告别公告_我告别freeCodeCamp
- MVC和MVVM框架模式
- 大学四年生活总结_大学四年生活总结
- 小学计算机课教学设计加教学反思,小学信息技术优秀教学反思
- 宕机三个月、36亿打水漂,印度骄傲Infosys如何活成了全球笑话?
热门文章
- python if else 必须同时出现吗,Python:Inline if语句else什么也不做
- python launcher卸载后蓝屏_误卸载python2.4导致yum不能用后的修复
- csr8670 修改key_CSR8670 DFU user guide
- python引用函数_python 调用函数
- python中创建集合的语句_Python 集合(set) 介绍
- C | 构成和编码规范
- postgresql 分区视图_PostgreSQL架构集中式到分布式主流架构总结
- groovy 字符串截取最后一个_Java基础篇——字符串详解
- 宝塔面板php降级,宝塔面板6.8.8降级到5.9.1的方案教程
- 【渝粤题库】国家开放大学2021春1374班级管理题目