编写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脚本设置系统时间的两种方法
Feb 21 Python
Python的mysql数据库的更新如何实现
Jul 31 Python
python使用Pycharm创建一个Django项目
Mar 05 Python
Python selenium抓取微博内容的示例代码
May 17 Python
Python Logging 日志记录入门学习
Jun 02 Python
Python文件常见操作实例分析【读写、遍历】
Dec 10 Python
python用requests实现http请求代码实例
Oct 31 Python
Python序列化与反序列化pickle用法实例
Nov 11 Python
Pytorch自己加载单通道图片用作数据集训练的实例
Jan 18 Python
Python进程Multiprocessing模块原理解析
Feb 28 Python
Python3爬虫ChromeDriver的安装实例
Feb 06 Python
Python3使用Selenium获取session和token方法详解
Feb 16 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
我的论坛源代码(九)
2006/10/09 PHP
PHP+DBM的同学录程序(3)
2006/10/09 PHP
PR值查询 | PageRank 查询
2006/12/20 PHP
php foreach 参数强制类型转换的问题
2010/12/10 PHP
深入理解PHP之require/include顺序 推荐
2011/01/02 PHP
ThinkPHP 表单自动验证运用示例
2014/10/13 PHP
全面解读PHP的Yii框架中的日志功能
2016/03/17 PHP
详解PHP编码转换函数应用技巧
2016/10/22 PHP
PHP验证码无法显示的原因及解决办法
2017/08/11 PHP
javascript在一段文字中的光标处插入其他文字
2007/08/26 Javascript
JavaScript Cookie 直接浏览网站分网址
2009/12/08 Javascript
Javascript 函数中的参数使用分析
2010/03/27 Javascript
XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)
2011/01/12 Javascript
jquery 判断滚动条到达了底部和顶端的方法
2014/04/02 Javascript
angularjs实现文字上下无缝滚动特效代码
2016/09/04 Javascript
jQuery插件ajaxFileUpload异步上传文件
2016/10/19 Javascript
JavaScript登录验证码的实现
2016/10/27 Javascript
angularjs之$timeout指令详解
2017/06/13 Javascript
vue+element-ui+ajax实现一个表格的实例
2018/03/09 Javascript
vue2.0 根据状态值进行样式的改变展示方法
2018/03/13 Javascript
详解微信JS-SDK选择图片遇到的坑
2018/08/15 Javascript
Angular 利用路由跳转到指定页面的指定位置方法
2018/08/31 Javascript
Vue.js组件实现选项卡以及切换特效
2019/07/24 Javascript
微信小程序 checkbox使用实例解析
2019/09/09 Javascript
uni-app 支持多端第三方地图定位的方法
2020/01/03 Javascript
python字符串排序方法
2014/08/29 Python
scrapy爬虫实例分享
2017/12/28 Python
Python SMTP配置参数并发送邮件
2020/06/16 Python
css3闪亮进度条效果实现思路及代码
2013/04/17 HTML / CSS
党的群众路线教育实践活动心得体会(企业)
2014/11/03 职场文书
出差报告怎么写
2014/11/06 职场文书
上课说话检讨书
2015/01/27 职场文书
后勤工作个人总结
2015/02/28 职场文书
终止劳动合同通知书
2015/04/16 职场文书
六一儿童节园长致辞
2015/07/31 职场文书
MySQL时间盲注的五种延时方法实现
2021/05/18 MySQL