编写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使用内存zipfile对象在内存中打包文件示例
Apr 30 Python
Python兔子毒药问题实例分析
Mar 05 Python
在Python中使用NLTK库实现对词干的提取的教程
Apr 08 Python
python文件名和文件路径操作实例
Sep 29 Python
100行Python代码实现自动抢火车票(附源码)
Jan 11 Python
Python文本统计功能之西游记用字统计操作示例
May 07 Python
对python-3-print重定向输出的几种方法总结
May 11 Python
python查询文件夹下excel的sheet名代码实例
Apr 02 Python
Python tkinter三种布局实例详解
Jan 06 Python
Django密码存储策略分析
Jan 09 Python
Java Spring项目国际化(i18n)详细方法与实例
Mar 20 Python
python使用scapy模块实现ping扫描的过程详解
Jan 21 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
德生PL660的电路分析和打磨
2021/03/02 无线电
分享ThinkPHP3.2中关联查询解决思路
2015/09/20 PHP
Prototype最新版(1.5 rc2)使用指南(1)
2007/01/10 Javascript
从Ajax到JQuery Ajax学习
2007/02/14 Javascript
基于JQuery的一句代码实现表格的简单筛选
2010/07/26 Javascript
js中查找最近的共有祖先元素的实现代码
2010/12/30 Javascript
使用Firebug对js进行断点调试的图文方法
2011/04/02 Javascript
详谈 Jquery Ajax异步处理Json数据.
2011/09/09 Javascript
在Windows上安装Node.js模块的方法
2011/09/25 Javascript
网站404页面3秒后跳到首页的实例代码
2013/08/16 Javascript
Javascript浅谈之引用类型
2013/12/18 Javascript
js获得网页背景色和字体色的方法
2014/03/21 Javascript
简介JavaScript中strike()方法的使用
2015/06/08 Javascript
JS hashMap实例详解
2016/05/26 Javascript
微信小程序 网络请求(post请求,get请求)
2017/01/17 Javascript
vue总线机制(bus)知识点详解
2020/05/10 Javascript
15分钟上手vue3.0(小结)
2020/05/20 Javascript
一个超级简单的python web程序
2014/09/11 Python
Python中尝试多线程编程的一个简明例子
2015/04/07 Python
python实现带声音的摩斯码翻译实现方法
2015/05/20 Python
浅述python中深浅拷贝原理
2018/09/18 Python
python3 selenium自动化 下拉框定位的例子
2019/08/23 Python
浅析PEP572: 海象运算符
2019/10/15 Python
Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解
2020/02/18 Python
五分钟带你搞懂python 迭代器与生成器
2020/08/30 Python
python实现excel公式格式化的示例代码
2020/12/23 Python
The Body Shop美体小铺西班牙官网:天然化妆品
2019/06/21 全球购物
校园自助餐厅的创业计划书
2013/12/26 职场文书
2014年测量员工作总结
2014/12/12 职场文书
个人工作违纪检讨书
2015/05/05 职场文书
高三英语教学反思
2016/03/03 职场文书
javascript数组includes、reduce的基本使用
2021/07/02 Javascript
Python pandas之求和运算和非空值个数统计
2021/08/07 Python
十大最强奥特曼武器:怪兽战斗仪在榜,第五奥特之父只使用过一次
2022/03/18 日漫
【海涛dota解说】DCG联赛第一周 LGD VS DH
2022/04/01 DOTA
Spring 使用注解开发
2022/05/20 Java/Android