编写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 相关文章推荐
深入浅析ImageMagick命令执行漏洞
Oct 11 Python
深入理解NumPy简明教程---数组3(组合)
Dec 17 Python
Python numpy 点数组去重的实例
Apr 18 Python
python实现决策树分类
Aug 30 Python
在python中获取div的文本内容并和想定结果进行对比详解
Jan 02 Python
python输出电脑上所有的串口名的方法
Jul 02 Python
tensorflow 实现自定义梯度反向传播代码
Feb 10 Python
pycharm部署、配置anaconda环境的教程
Mar 24 Python
tensorflow基于CNN实战mnist手写识别(小白必看)
Jul 20 Python
python实现图片转字符画
Feb 19 Python
python神经网络编程之手写数字识别
May 08 Python
详解Python类和对象内容
Jun 22 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 json转换成数组形式代码分享
2014/11/10 PHP
php 伪造ip以及url来路信息方法汇总
2014/11/25 PHP
php天翼开放平台短信发送接口实现方法
2014/12/22 PHP
ubuntu下配置nginx+php+mysql详解
2015/09/10 PHP
解析WordPress中控制用户登陆和判断用户登陆的PHP函数
2016/03/01 PHP
老生常谈PHP面向对象之命令模式(必看篇)
2017/05/24 PHP
php根据命令行参数生成配置文件详解
2019/03/15 PHP
javascript的onchange事件与jQuery的change()方法比较
2009/09/28 Javascript
jquery插件方式实现table查询功能的简单实例
2016/06/06 Javascript
BootStrap学习笔记之nav导航栏和面包屑导航
2017/01/03 Javascript
vue.js中mint-ui框架的使用方法
2017/05/12 Javascript
原生js轮播特效
2017/05/18 Javascript
Vue2 Vue-cli中使用Typescript的配置详解
2017/07/24 Javascript
JS随机数产生代码分享
2018/02/24 Javascript
微信小程序wx.uploadfile 本地文件转base64的实现代码
2018/06/28 Javascript
Vue中Axios从远程/后台读取数据
2019/01/21 Javascript
JavaScript实现英语单词题库
2019/12/24 Javascript
[03:17]DOTA2-DPC中国联赛1月29日Recap集锦
2021/03/11 DOTA
Python中optionParser模块的使用方法实例教程
2014/08/29 Python
Python使用scrapy采集数据过程中放回下载过大页面的方法
2015/04/08 Python
总结用Pdb库调试Python的方式及常用的命令
2016/08/18 Python
对python中的pop函数和append函数详解
2018/05/04 Python
python通过zabbix api获取主机
2018/09/17 Python
sqlalchemy实现时间列自动更新教程
2020/09/02 Python
python中remove函数的踩坑记录
2021/01/04 Python
CHARLES & KEITH澳大利亚官网:新加坡时尚品牌
2019/01/22 全球购物
数百万免费的图形资源:Freepik
2020/09/21 全球购物
Vans(范斯)新西兰官方网站:美国原创极限运动品牌
2020/09/19 全球购物
会计学财务管理专业个人的自我评价
2013/10/19 职场文书
会计专业毕业生推荐信
2013/11/05 职场文书
会计专业毕业生自荐书
2014/06/25 职场文书
做一个有道德的人活动方案
2014/08/25 职场文书
殡葬服务心得体会
2014/09/11 职场文书
小学班主任评语
2014/12/29 职场文书
食品卫生管理制度
2015/08/06 职场文书
Nginx进程管理和重载原理详解
2021/04/22 Servers