当前位置: 首页 > 编程笔记 >

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

通建安
2023-03-14
本文向大家介绍编写Python脚本把sqlAlchemy对象转换成dict的教程,包括了编写Python脚本把sqlAlchemy对象转换成dict的教程的使用技巧和注意事项,需要的朋友参考一下

在用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__的信息的,可能也会出问题,不过我目前觉得这样最方便了

 类似资料:
  • 本文向大家介绍实现MySQL回滚的Python脚本的编写教程,包括了实现MySQL回滚的Python脚本的编写教程的使用技巧和注意事项,需要的朋友参考一下 操作数据库时候难免会因为“大意”而误操作,需要快速恢复的话通过备份来恢复是不太可能的,因为需要还原和binlog差来恢复,等不了,很费时。这里先说明下因为Delete 操作的恢复方法:主要还是通过binlog来进行恢复,前提是binlog_fo

  • 本文向大家介绍使用IronPython把Python脚本集成到.NET程序中的教程,包括了使用IronPython把Python脚本集成到.NET程序中的教程的使用技巧和注意事项,需要的朋友参考一下 从两个优秀的世界各取所需,更高效的复用代码。想想就醉了,.NET和python融合了。“懒惰”的程序员们,还等什么? Jesse Smith为您展示如何两个语言来服务同一个.NET程序。你能集两家所长

  • 问题内容: 假设我们有一个类型的对象。我们定义了第二个。什么是最好的做法是“转换”的对象,以和保存所有数据? 问题答案: 这会进行“类转换”,但会带来附带损害。创建另一个对象并替换为BrainCore发布的对象会更安全- 但是此代码可以执行您要求的操作,而不会创建新对象。

  • 本文向大家介绍把普通对象转换成json格式的对象的简单实例,包括了把普通对象转换成json格式的对象的简单实例的使用技巧和注意事项,需要的朋友参考一下 1、什么叫做JSON? JSON只是一种数据格式(它不是一种新的数据类型) var obj = {name: "中国", age: 5000};//->普通格式的对象 var jsonObj = {"name": "中国", "age": 5000

  • 我在Python2.7上使用Flask,我想将一个值作为一个json值返回, 但是我得到了以下错误, 127.0.0.1--[03/Oct/2016 15:04:16]“POST/add_new_patient HTTP/1.1”500-127.0.0.1--[03/Oct/2016 15:04:30]“options/add_new_patient HTTP/1.1”200-[2016-10-0

  • 问题内容: 我如何转换defaultdict 成为普通命令? 问题答案: 您可以简单地致电: 但请记住,defaultdict 是 一个dict: 只是稍有不同的行为,因为当您试图访问一个缺少关键-这通常会提高一个-在被称为改为: 这就是您在字典的数据端出现之前看到的内容。 因此,在不实际制作新对象的情况下恢复更多类似dict的行为的另一个技巧是重置: 但这在大多数情况下都不值得。