编写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中List.count()方法的使用教程
May 20 Python
python删除列表内容
Aug 04 Python
Python使用smtp和pop简单收发邮件完整实例
Jan 09 Python
python判断设备是否联网的方法
Jun 29 Python
python查看模块,对象的函数方法
Oct 16 Python
Python后台开发Django会话控制的实现
Apr 15 Python
python实现按首字母分类查找功能
Oct 31 Python
Pytorch之保存读取模型实例
Dec 30 Python
Python openpyxl 插入折线图实例
Apr 17 Python
基于python实现数组格式参数加密计算
Apr 21 Python
详解python polyscope库的安装和例程
Nov 13 Python
Python自动化工具之实现Excel转Markdown表格
Apr 08 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
多重?l件?合查?(二)
2006/10/09 PHP
php利用iframe实现无刷新文件上传功能的代码
2011/09/29 PHP
php获取本周开始日期和结束日期的方法
2015/03/09 PHP
提交表单后 PHP获取提交内容的实现方法
2016/05/25 PHP
微博@符号的用户名提示效果。(想@到谁?)
2010/11/05 Javascript
jquery 学习之二 属性 文本与值(text,val)
2010/11/25 Javascript
两个数组去重的JS代码
2013/12/04 Javascript
一些老手都不一定知道的JavaScript技巧
2014/05/06 Javascript
js树插件zTree获取所有选中节点数据的方法
2015/01/28 Javascript
一个php+js实时显示时间问题
2015/10/12 Javascript
详解js中call与apply关键字的作用
2016/11/21 Javascript
移动端基础事件总结与应用
2017/01/12 Javascript
利用javascript实现的三种图片放大镜效果实例(附源码)
2017/01/23 Javascript
js 用于检测类数组对象的函数方法
2017/05/02 Javascript
基于react框架使用的一些细节要点的思考
2017/05/31 Javascript
Angular中封装fancyBox(图片预览)遇到问题小结
2017/09/01 Javascript
vue引入js数字小键盘的实现代码
2018/05/14 Javascript
Vue2 轮播图slide组件实例代码
2018/05/31 Javascript
JS实现可针对算术表达式求值的计算器功能示例
2018/09/04 Javascript
tracking.js页面人脸识别插件使用方法
2020/04/16 Javascript
python实现批量修改图片格式和尺寸
2018/06/07 Python
tensorflow实现简单逻辑回归
2018/09/07 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
2020/06/17 Python
TensorFlow-gpu和opencv安装详细教程
2020/06/30 Python
python 自动识别并连接串口的实现
2021/01/19 Python
Html5页面中的返回实现的方法
2018/02/26 HTML / CSS
Canvas 帧动画吃苹果小游戏
2020/08/05 HTML / CSS
美国最大的电子宠物训练产品制造商:PetSafe
2018/10/12 全球购物
舞蹈毕业生的自我评价
2014/03/05 职场文书
优秀少先队辅导员先进事迹材料
2014/05/18 职场文书
四查四看整改措施
2014/09/19 职场文书
2014年加油站工作总结
2014/12/04 职场文书
2015年艾滋病宣传活动总结
2015/03/27 职场文书
欠款起诉书范文
2015/05/19 职场文书
学习杨善洲同志先进事迹心得体会
2016/01/23 职场文书
win10以太网连接不上怎么办?Win10连接以太网详细教程
2022/04/08 数码科技