编写Python脚本把sqlAlchemy对象转换成dict的教程


Posted in Python onMay 29, 2015

在用sqlAlchemy写web应用的时候,经常会用json进行通信,跟json最接近的对象就是dict,有时候操作dict也会比操作ORM对象更为方便,毕竟不用管数据库session的状态了。

假设数据库里有一张post表,其中一种方法就是

p = session.query(Post).first()
p.__dict__

但由于p是sqlAlchemy的对象,所以p.__dict__中会有一些其他的属性比如_sa_instance这种我们不需要关注的

那么我们可以给model的基类加一个方法,假设models.py中原来是这样

Base = sqlalchemy.ext.declarative.declarative_base()

class Post(Base):
  __tablename__ = 'post'
  id = Column(Integer, primary_key=True)
  title = Column(String)

那么我们可以加一个to_dict()方法到Base类中

def to_dict(self):
  return {c.name: getattr(self, c.name, None) for c in self.__table__.columns}

Base.to_dict = to_dict

这样就可以

p = session.query(Post).first()
p.to_dict()

当然,如果model没有和table绑定的话model里是没有__table__的信息的,可能也会出问题,不过我目前觉得这样最方便了

Python 相关文章推荐
Python网络爬虫项目:内容提取器的定义
Oct 25 Python
python利用Guetzli批量压缩图片
Mar 23 Python
基于python中pygame模块的Linux下安装过程(详解)
Nov 09 Python
pymongo中聚合查询的使用方法
Mar 22 Python
python游戏开发之视频转彩色字符动画
Apr 26 Python
解决Django连接db遇到的问题
Aug 29 Python
使用python制作游戏下载进度条的代码(程序说明见注释)
Oct 24 Python
Python 实现自动导入缺失的库
Oct 29 Python
Python OpenCV实现测量图片物体宽度
May 27 Python
基于Keras中Conv1D和Conv2D的区别说明
Jun 19 Python
Python3爬虫中识别图形验证码的实例讲解
Jul 30 Python
Python中rapidjson参数校验实现
Jul 25 Python
Python fileinput模块使用实例
May 28 #Python
Python sys.argv用法实例
May 28 #Python
Python中exit、return、sys.exit()等使用实例和区别
May 28 #Python
Python中的with...as用法介绍
May 28 #Python
python关键字and和or用法实例
May 28 #Python
Python yield 使用浅析
May 28 #Python
Python中super的用法实例
May 28 #Python
You might like
php中使用接口实现工厂设计模式的代码
2012/06/17 PHP
PHP echo,print,printf,sprintf函数之间的区别与用法详解
2013/11/27 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
2017/07/03 PHP
优秀js开源框架-jQuery使用手册(1)
2007/03/10 Javascript
精解window.setTimeout()&window.setInterval()使用方式与参数传递问题!
2007/11/23 Javascript
JavaScript DOM 编程艺术(第2版)读书笔记(JavaScript的最佳实践)
2013/10/01 Javascript
文本框水印提示效果的简单实现代码
2014/02/22 Javascript
js类定义函数时用prototype与不用的区别示例介绍
2014/06/10 Javascript
Jquery解析Json格式数据过程代码
2014/10/17 Javascript
JavaScript电子时钟倒计时
2016/01/09 Javascript
AngularJs页面筛选标签小功能
2016/08/01 Javascript
Javascript中判断一个值是否为undefined的方法详解
2016/09/28 Javascript
jQuery自定义插件详解及实例代码
2016/12/29 Javascript
微信小程序 生命周期函数详解
2017/05/24 Javascript
Angular实现的自定义模糊查询、排序及三角箭头标注功能示例
2017/12/28 Javascript
微信小程序App生命周期详解
2018/01/31 Javascript
JS处理一些简单计算题
2018/02/24 Javascript
angular1.x ui-route传参的三种写法小结
2018/08/31 Javascript
写gulp遇到的ES6问题详解
2018/12/03 Javascript
如何基于JS截获动态代码
2019/12/25 Javascript
Python生成验证码实例
2014/08/21 Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
2019/08/20 Python
用python写爬虫简单吗
2020/07/28 Python
python判断all函数输出结果是否为true的方法
2020/12/03 Python
HTML5之SVG 2D入门3—文本与图像及渲染文本介绍
2013/01/30 HTML / CSS
大学毕业通用个人的求职信
2013/12/08 职场文书
厂长助理岗位职责
2013/12/27 职场文书
在校硕士自我鉴定
2014/01/23 职场文书
旅游饭店管理专业自荐书
2014/06/28 职场文书
初中毕业典礼演讲稿
2014/09/09 职场文书
2014领导班子四风问题对照检查材料思想汇报
2014/09/21 职场文书
任命书标准格式
2015/03/02 职场文书
管理失职检讨书范文
2015/05/05 职场文书
三年级作文之小小梦想
2019/12/06 职场文书
《分一些蚊子进来》读后感3篇
2020/01/09 职场文书
MySQL和Oracle批量插入SQL的通用写法示例
2021/11/17 MySQL