编写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多线程抓取代理服务器IP地址的示例
Nov 09 Python
python+pyqt5编写md5生成器
Mar 18 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
Mar 27 Python
Python爬虫——爬取豆瓣电影Top250代码实例
Apr 17 Python
树莓派采用socket方式文件传输(python)
Jun 22 Python
django框架CSRF防护原理与用法分析
Jul 22 Python
python中设置超时跳过,超时退出的方式
Dec 13 Python
python通过nmap扫描在线设备并尝试AAA登录(实例代码)
Dec 30 Python
Flask和pyecharts实现动态数据可视化
Feb 26 Python
python2.7使用scapy发送syn实例
May 05 Python
Python PyQt5模块实现窗口GUI界面代码实例
May 12 Python
Python中有几个关键字
Jun 04 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
php 无法载入mysql扩展
2010/03/12 PHP
PHP数据流应用的一个简单实例
2012/09/14 PHP
PHP gbk环境下json_dencode传送来的汉字
2012/11/13 PHP
Yii框架中jquery表单验证插件用法示例
2016/10/18 PHP
php多文件打包下载的实例代码
2017/07/12 PHP
Laravel 修改默认日志文件名称和位置的例子
2019/10/17 PHP
加载远程图片时,经常因为缓存而得不到更新的解决方法(分享)
2013/06/26 Javascript
开发 Internet Explorer 右键功能表(ContextMenu)
2013/07/03 Javascript
原生javascript实现图片滚动、延时加载功能
2015/01/12 Javascript
JS获取iframe中marginHeight和marginWidth属性的方法
2015/04/01 Javascript
JQuery判断checkbox是否选中及其它复选框操作方法合集
2015/06/01 Javascript
jQuery validate+artdialog+jquery form实现弹出表单思路详解
2016/04/18 Javascript
bootstrap监听滚动实现头部跟随滚动
2016/11/08 Javascript
jQuery 表单序列化实例代码
2017/06/11 jQuery
js 简易版滚动条实例(适用于移动端H5开发)
2017/06/26 Javascript
Angular 表单控件示例代码
2017/06/26 Javascript
js移动端图片压缩上传功能
2020/08/18 Javascript
让webpack+vue-cil项目不再自动打开浏览器的方法
2018/09/27 Javascript
JavaScript中引用vs复制示例详析
2018/12/06 Javascript
解决$store.getters调用不执行的问题
2019/11/08 Javascript
vue实现打地鼠小游戏
2020/08/21 Javascript
python 获取本机ip地址的两个方法
2013/02/25 Python
Python编程argparse入门浅析
2018/02/07 Python
python3+PyQt5实现拖放功能
2018/04/24 Python
python如何使用代码运行助手
2020/07/03 Python
openCV提取图像中的矩形区域
2020/07/21 Python
Python基于staticmethod装饰器标示静态方法
2020/10/17 Python
PHP如何设置和取得Cookie值
2015/06/30 面试题
汽车电子与维修专业大学生求职信
2013/09/28 职场文书
淘宝网店营销策划书
2014/01/11 职场文书
股份合作协议书
2014/04/12 职场文书
体操比赛口号
2014/06/10 职场文书
物业管理委托协议(2篇)
2014/09/23 职场文书
小学生反邪教心得体会
2016/01/15 职场文书
公司致全体员工的感谢信
2019/06/24 职场文书
python绘制云雨图raincloud plot
2022/08/05 Python