编写Python脚本把sqlAlchemy对象转换成dict的教程

 更新时间:2015年05月29日 12:36:26   作者:wangdai  
这篇文章主要介绍了编写Python脚本把sqlAlchemy对象转换成dict的教程,主要是基于Python的model类构建一个转换的方法,需要的朋友可以参考下

在用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中ConfigParser模块示例详解

    Python中ConfigParser模块示例详解

    有些时候在项目中,使用配置文件来配置一些灵活的参数是比较常见的事,因为这会使得代码的维护变得更方便,而ini配置文件是比较常用的一种,今天介绍用ConfigParser模块来解析ini配置文件,感兴趣的朋友一起看看吧
    2023-01-01
  • Django在Model保存前记录日志实例

    Django在Model保存前记录日志实例

    这篇文章主要介绍了Django在Model保存前记录日志实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • Python全栈之进程和守护进程

    Python全栈之进程和守护进程

    这篇文章主要为大家介绍了Python进程和守护进程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • Python随机生成8位密码的示例详解

    Python随机生成8位密码的示例详解

    这篇文章主要为大家详细介绍了基于Python实现随机生成8位密码的相关方法,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下
    2023-02-02
  • python 如何求N的阶乘

    python 如何求N的阶乘

    这篇文章主要介绍了python 如何求N的阶乘,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • python处理RSTP视频流过程解析

    python处理RSTP视频流过程解析

    这篇文章主要介绍了python处理RSTP视频流过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • python反转一个三位整数的多种实现方案

    python反转一个三位整数的多种实现方案

    这篇文章主要介绍了python反转一个三位整数的多种实现方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • python连接access数据库两种方式总结

    python连接access数据库两种方式总结

    这篇文章主要介绍了python连接access数据库两种方式的相关资料,SQLAlchemy使用access方言进行连接,而pyodbc则通过pyodbc模块实现连接,文章还提供了连接代码示例,需要的朋友可以参考下
    2025-02-02
  • Django imgareaselect手动剪切头像实现方法

    Django imgareaselect手动剪切头像实现方法

    这篇文章主要介绍了Django imgareaselect手动剪切头像实现方法,实例分析了Django框架操作图片的相关技巧,需要的朋友可以参考下
    2015-05-05
  • Python音频处理库pydub的使用教程详解

    Python音频处理库pydub的使用教程详解

    Pydub是Python音频处理库,可以对音频进行切割、合并、转换、调整音量等操作。本文将对pydub各个知识点和案例进行介绍,需要的可以参考一下
    2023-03-03

最新评论