Python数据库ORM SQLAlchemy 0.7学习笔记(4) 添加对象
1. 添加一个新对象
前面介绍了映射到实体表的映射类
User
,如果我们想将其持久化(Persist),那么就需要将这个由
User
类建立的对象实例添加到我们先前创建的Session会话实例中:
ed_user = User('ed', 'Ed Jones', 'edspassword')
session.add(ed_user)
上面两段代码执行完后对象持久化了么?你或许会兴冲冲的跑去数据库里查看,结果却失望而归——数据库里什么都没有。为什么呢?因为SQLAlchemy采取的是Lazyload策略,也就是说现在这个对象被标记为Pending准备状态,但没有执行任何可能导致数据库变化的SQL语句。那么什么时候会执行SQL语句并真正持久化呢?这个要等SQLAlchemy觉得需要的时候,比如我们现在查询这个对象、对象的一个属性或者显式的调用
flush
方法,这时候SQLAlchemy觉得它“是时候”或者“不得不”执行SQL数据库查询以便于把标记为Pending的数据写入数据库表中了。假如这时候你执行的获取对象、对象属性或者类似的操作,SQLAlchemy在执行完SQL语句后会将你所要查询的数据反馈给你。