编写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编写一个简单的FUSE文件系统的教程
Apr 02 Python
将Python代码嵌入C++程序进行编写的实例
Jul 31 Python
Python编程之序列操作实例详解
Jul 22 Python
Python+selenium实现截图图片并保存截取的图片
Jan 05 Python
python requests 库请求带有文件参数的接口实例
Jan 03 Python
Python帮你识破双11的套路
Nov 11 Python
Python matplotlib画曲线例题解析
Feb 07 Python
Python如何使用turtle库绘制图形
Feb 26 Python
python实现人机五子棋
Mar 25 Python
Python利用matplotlib绘制折线图的新手教程
Nov 05 Python
Django解决frame拒绝问题的方法
Dec 18 Python
一小时学会TensorFlow2之基本操作2实例代码
Sep 04 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
一个显示天气预报的程序
2006/10/09 PHP
并发下常见的加锁及锁的PHP具体实现代码
2010/10/12 PHP
浅谈PHP中的面向对象OOP中的魔术方法
2017/06/12 PHP
php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析
2020/04/20 PHP
js技巧--转义符"\"的妙用
2007/01/09 Javascript
jQuery与ExtJS之选择实例分析
2010/08/19 Javascript
JavaScript高级程序设计 阅读笔记(四) ECMAScript中的类型转换
2012/02/27 Javascript
通过BootStrap-select插件 js jQuery控制select属性变化
2017/01/03 Javascript
前端编码规范(3)JavaScript 开发规范
2017/01/21 Javascript
整理关于Bootstrap导航的慕课笔记
2017/03/29 Javascript
10个在JavaScript开发中常遇到的BUG
2017/12/18 Javascript
Angular2 父子组件通信方式的示例
2018/01/29 Javascript
iview中Select 选择器多选校验方法
2018/03/15 Javascript
JavaScript面试出现频繁的一些易错点整理
2018/03/29 Javascript
vuex操作state对象的实例代码
2018/04/25 Javascript
老生常谈JS中的继承及实现代码
2018/07/06 Javascript
CKEditor 4.4.1 添加代码高亮显示插件功能教程【使用官方推荐Code Snippet插件】
2019/06/14 Javascript
浅谈js数组splice删除某个元素爬坑
2020/10/14 Javascript
js实现缓动动画
2020/11/25 Javascript
python自动化测试之DDT数据驱动的实现代码
2019/07/23 Python
python序列类型种类详解
2020/02/26 Python
基于python tkinter的点名小程序功能的实例代码
2020/08/22 Python
Python爬虫中Selenium实现文件上传
2020/12/04 Python
用CSS3和table标签实现一个圆形轨迹的动画的示例代码
2019/01/17 HTML / CSS
Sasa莎莎海外旗舰店:香港莎莎美妆平台
2018/03/21 全球购物
美国糖果店:Sugarfina
2019/02/21 全球购物
萨克斯第五大道英国:Saks Fifth Avenue英国
2019/04/01 全球购物
.NET初级开发工程师面试题(包括Javascript)
2012/08/22 面试题
Linux操作面试题
2015/02/11 面试题
历史学专业毕业生求职信
2013/09/27 职场文书
村官工作鉴定评语
2014/01/27 职场文书
党员领导干部承诺书
2014/05/28 职场文书
2015年“七七卢沟桥事变”纪念活动总结
2015/03/24 职场文书
单位车辆管理制度
2015/08/05 职场文书
Spring Security中用JWT退出登录时遇到的坑
2021/10/16 Java/Android
深入理解pytorch库的dockerfile
2022/06/10 Python