编写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实现简易版计算器
Jun 22 Python
Python3.4学习笔记之类型判断,异常处理,终止程序操作小结
Mar 01 Python
pybind11在Windows下的使用教程
Jul 04 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
Jul 09 Python
python实现微信小程序用户登录、模板推送
Aug 28 Python
pytorch加载自定义网络权重的实现
Jan 07 Python
python修改linux中文件(文件夹)的权限属性操作
Mar 05 Python
如何将tensorflow训练好的模型移植到Android (MNIST手写数字识别)
Apr 22 Python
Python3读取和写入excel表格数据的示例代码
Jun 09 Python
简单了解Python多态与属性运行原理
Jun 15 Python
Python压缩模块zipfile实现原理及用法解析
Aug 14 Python
用Python爬虫破解滑动验证码的案例解析
May 06 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 8小时时间差的解决方法小结
2009/12/22 PHP
php开发微信支付获取用户地址
2015/10/04 PHP
部署PHP时的4个配置修改说明
2015/10/19 PHP
PHP实现微信JS-SDK接口选择相册及拍照并上传的方法
2016/12/05 PHP
PHP遍历目录文件的常用方法小结
2017/02/03 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
2020/03/26 PHP
JavaScript中“基本类型”之争小结
2013/01/03 Javascript
javascript列表框操作函数集合汇总
2013/11/28 Javascript
checkbox选中与未选中判断示例
2014/08/04 Javascript
JavaScript学习笔记之JS对象
2015/01/22 Javascript
基于vue2.0+vuex+localStorage开发的本地记事本示例
2017/02/28 Javascript
JQuery 封装 Ajax 常用方法(推荐)
2017/05/21 jQuery
AngularJS中table表格基本操作示例
2017/10/10 Javascript
JavaScript引用类型Array实例分析
2018/07/24 Javascript
举例讲解Python设计模式编程中对抽象工厂模式的运用
2016/03/02 Python
利用Anaconda简单安装scrapy框架的方法
2018/06/13 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
2019/01/17 Python
详解opencv中画圆circle函数和椭圆ellipse函数
2019/12/27 Python
IDLE下Python文件编辑和运行操作
2020/04/25 Python
pytorch简介
2020/11/11 Python
Django执行源生mysql语句实现过程解析
2020/11/12 Python
CSS3中动画属性transform、transition和animation属性的区别
2016/09/25 HTML / CSS
Tory Burch美国官方网站:美国时尚生活品牌
2016/08/01 全球购物
挪威户外活动服装和装备购物网站:Bergfreunde挪威
2016/10/20 全球购物
很酷的小工具和电子产品商城:GearBest
2016/11/19 全球购物
Pure Collection美国官网:来自英国羊绒专家的奢华羊绒
2017/11/19 全球购物
迪士尼法国在线商店:shopDisney FR
2020/12/03 全球购物
经典公益广告词
2014/03/13 职场文书
工作说明书范文
2014/05/07 职场文书
英语分层教学实施方案
2014/06/15 职场文书
房屋买卖委托书格式范本格式
2014/10/13 职场文书
2015年高校教师个人工作总结
2015/05/25 职场文书
2016计算机专业毕业生自荐信
2016/01/28 职场文书
使用python如何删除同一文件夹下相似的图片
2021/05/07 Python
如何利用opencv判断两张图片是否相同详解
2021/07/07 Python
Vue OpenLayer 为地图绘制风场效果
2022/04/24 Vue.js