编写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文件比较示例分享
Jan 10 Python
python使用在线API查询IP对应的地理位置信息实例
Jun 01 Python
使用Python开发windows GUI程序入门实例
Oct 23 Python
python计算方程式根的方法
May 07 Python
浅析Python数据处理
May 02 Python
详解Python如何生成词云的方法
Jun 01 Python
mac下pycharm设置python版本的图文教程
Jun 13 Python
pandas 按照特定顺序输出的实现代码
Jul 10 Python
Python参数传递对象的引用原理解析
May 22 Python
Vs Code中8个好用的python 扩展插件
Oct 12 Python
详解pycharm连接远程linux服务器的虚拟环境的方法
Nov 13 Python
matplotlib 范围选区(SpanSelector)的使用
Feb 24 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
dedecms防止FCK乱格式化你的代码的修改方法
2007/03/17 PHP
php数组相加 array(“a”)+array(“b”)结果还是array(“a”)
2012/09/19 PHP
php无限分类使用concat如何实现
2015/11/05 PHP
Jquery 动态生成表格示例代码
2013/12/24 Javascript
js获得页面的高度和宽度的方法
2014/02/23 Javascript
运用JQuery的toggle实现网页加载完成自动弹窗
2014/03/18 Javascript
Nodejs爬虫进阶教程之异步并发控制
2016/02/15 NodeJs
javascript 小数乘法结果错误的处理方法
2016/07/28 Javascript
js实现表单提交后不重新刷新当前页面
2016/11/30 Javascript
微信小程序 五星评分(包括半颗星评分)实例代码
2016/12/14 Javascript
angular-cli修改端口号【angular2】
2017/04/19 Javascript
vue.js 添加 fastclick的支持方法
2018/08/28 Javascript
Layui实现带查询条件的分页
2019/07/27 Javascript
关于element-ui表单中限制输入纯数字的解决方式
2020/09/08 Javascript
windows下wxPython开发环境安装与配置方法
2014/06/28 Python
python查找目录下指定扩展名的文件实例
2015/04/01 Python
Python如何实现守护进程的方法示例
2017/02/08 Python
python 文件操作删除某行的实例
2017/09/04 Python
python使用numpy读取、保存txt数据的实例
2018/10/14 Python
如何运行带参数的python脚本
2019/11/15 Python
python输出pdf文档的实例
2020/02/13 Python
解决jupyter notebook 出现In[*]的问题
2020/04/13 Python
基于python 取余问题(%)详解
2020/06/03 Python
PyTorch安装与基本使用详解
2020/08/31 Python
老生常谈CSS中的长度单位
2016/06/27 HTML / CSS
Jacadi Paris美国官方网站:法国童装品牌
2017/10/15 全球购物
西安夏日科技有限公司Java笔试题
2013/01/11 面试题
有模特经验的简历自我评价
2013/09/19 职场文书
护士自荐信
2013/10/25 职场文书
技术人员面试提纲
2013/11/28 职场文书
电子商务专业学生职业生涯规划
2014/03/07 职场文书
物理教育专业求职信
2014/06/25 职场文书
电话客服专员岗位职责
2014/06/28 职场文书
2015年出纳工作总结与计划
2015/05/18 职场文书
2016年小学教师政治学习心得体会
2016/01/23 职场文书
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
2021/04/03 Python