编写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 相关文章推荐
pyside写ui界面入门示例
Jan 22 Python
Python的ORM框架SQLAlchemy入门教程
Apr 28 Python
Python文件操作类操作实例详解
Jul 11 Python
在Python web中实现验证码图片代码分享
Nov 09 Python
详解python 拆包可迭代数据如tuple, list
Dec 29 Python
Python基于更相减损术实现求解最大公约数的方法
Apr 04 Python
Python 读取图片文件为矩阵和保存矩阵为图片的方法
Apr 27 Python
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
Jul 27 Python
对Python3.x版本print函数左右对齐详解
Dec 22 Python
python实现淘宝秒杀脚本
Jun 23 Python
详解Python3之数据指纹MD5校验与对比
Jun 11 Python
python函数的作用域及关键字详解
Aug 20 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
两种方法实现文本框输入内容提示消失
2013/03/17 Javascript
javascript中常用编程知识
2013/04/08 Javascript
js实现浏览器的各种菜单命令比如打印、查看源文件等等
2013/10/24 Javascript
node.js中的favicon.ico请求问题处理
2014/12/15 Javascript
调试JavaScript中正则表达式中遇到的问题
2015/01/27 Javascript
IE下使用jQuery重置iframe地址时内存泄露问题解决办法
2015/02/05 Javascript
使用Node.js为其他程序编写扩展的基本方法
2015/06/23 Javascript
JS密码生成与强度检测完整实例(附demo源码下载)
2016/04/06 Javascript
web前端vue之CSS过渡效果示例
2018/01/10 Javascript
layui中使用jquery控制radio选中事件的示例代码
2018/08/15 jQuery
微信小程序的授权实现过程解析
2019/08/02 Javascript
layui输入框中只允许输入整数的实现方法
2019/09/18 Javascript
js实现烟花特效
2020/03/02 Javascript
python 判断一个进程是否存在
2009/04/09 Python
Python函数参数类型*、**的区别
2015/04/11 Python
python基础练习之几个简单的游戏
2017/11/10 Python
Python 记录日志的灵活性和可配置性介绍
2018/02/27 Python
python pandas读取csv后,获取列标签的方法
2018/11/12 Python
python3.5安装python3-tk详解
2019/04/26 Python
python多线程并发实例及其优化
2019/06/27 Python
解决pycharm运行程序出现卡住scanning files to index索引的问题
2019/06/27 Python
Pytorch Tensor 输出为txt和mat格式方式
2020/01/03 Python
python批量替换文件名中的共同字符实例
2020/03/05 Python
GoPro摄像机美国官网:美国运动相机厂商
2018/07/03 全球购物
大学生自我鉴定
2013/12/16 职场文书
药剂专业学生求职信范文
2013/12/28 职场文书
酒店出纳岗位职责
2013/12/29 职场文书
内业资料员岗位职责
2014/01/04 职场文书
毕业生学校推荐信范文
2014/05/21 职场文书
优秀团员事迹材料1000字
2014/08/20 职场文书
社会实践的活动方案
2014/08/22 职场文书
纪念九一八事变83周年国旗下讲话稿
2014/09/15 职场文书
群众路线党员自我评议范文2014
2014/09/24 职场文书
2016年过年放假安排通知
2015/08/18 职场文书
使用css样式设计一个简单的html登陆界面的实现
2021/03/30 HTML / CSS
PHP判断是否是json字符串
2021/04/01 PHP