编写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编写爬虫小程序
May 14 Python
Python 数据结构之旋转链表
Feb 25 Python
python爬虫爬取网页表格数据
Mar 07 Python
Python实现的文本对比报告生成工具示例
May 22 Python
Django中的ajax请求
Oct 19 Python
python按照多个条件排序的方法
Feb 08 Python
Python大数据之使用lxml库解析html网页文件示例
Nov 16 Python
让Django的BooleanField支持字符串形式的输入方式
May 20 Python
Python3爬虫中Ajax的用法
Jul 10 Python
python 爬取免费简历模板网站的示例
Sep 27 Python
教你怎么用Python实现多路径迷宫
Apr 29 Python
如何利用Matlab制作一款真正的拼图小游戏
May 11 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
Session服务器配置指南与使用经验的深入解析
2013/06/17 PHP
php实现水仙花数示例分享
2014/04/03 PHP
2款PHP无限级分类实例代码
2015/11/11 PHP
php抽奖概率算法(刮刮卡,大转盘)
2020/04/17 PHP
Yii中特殊行为ActionFilter的使用方法示例
2020/10/18 PHP
javascript之函数直接量(function(){})()
2007/06/29 Javascript
Javascript 日期对象Date扩展方法
2009/05/30 Javascript
PNG背景在不同浏览器下的应用
2009/06/22 Javascript
jquery.Jwin.js 基于jquery的弹出层插件代码
2012/05/23 Javascript
JS上传图片前的限制包括(jpg jpg gif及大小高宽)等
2012/12/19 Javascript
node.js中的fs.closeSync方法使用说明
2014/12/17 Javascript
Javascript中使用A标签获取当前目录的绝对路径方法
2015/03/02 Javascript
解决node-webkit 不支持html5播放mp4视频的方法
2015/03/11 Javascript
jQuery禁用键盘后退屏蔽F5刷新及禁用右键单击
2016/01/22 Javascript
jQuery代码实现实时获取时间
2017/01/29 Javascript
Vue.js中的图片引用路径的方式
2017/07/28 Javascript
jQuery实现base64前台加密解密功能详解
2017/08/29 jQuery
解决 viewer.js 动态更新图片导致无法预览的问题
2019/05/14 Javascript
Vue ​v-model相关知识总结
2021/01/28 Vue.js
[15:28]DOTA2 HEROS教学视频教你分分钟做大人-剧毒术士
2014/06/13 DOTA
[43:03]LGD vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
python连接池实现示例程序
2013/11/26 Python
python 实现上传图片并预览的3种方法(推荐)
2017/07/14 Python
Python生成器的使用方法和示例代码
2019/03/04 Python
Python 窗体(tkinter)按钮 位置实例
2019/06/13 Python
如何使用pandas读取txt文件中指定的列(有无标题)
2020/03/05 Python
韩国知名的家庭购物网站:CJmall
2016/08/01 全球购物
失业者真诚求职信范文
2013/12/25 职场文书
博士学位自我鉴定范文
2013/12/26 职场文书
党的群众路线教育实践活动个人剖析材料
2014/10/07 职场文书
试用期辞职信范文
2015/03/02 职场文书
证券公司客户经理岗位职责
2015/04/09 职场文书
2016元旦晚会主持词开场白和结束语
2015/12/04 职场文书
2019通用版导游词范本!
2019/08/07 职场文书
python3 hdf5文件 遍历代码
2021/05/19 Python
python 提取html文本的方法
2021/05/20 Python