SQLAlchemy指南
2008-11-10 13:25:13 来源:WEB开发网User类有一个特别的属性 c ,这个属性描述了User映射表格对象的列。
User.c.user_name 等同于 users_table.c.user_name ,记得 User 是Python对象,而 users 是 Table 对象。
5.4 修改数据
作为小经验,我们看看如何做出修改。首先,创建一个新的用户”Ed”,然后加入会话:
>>> ed=User()
>>> ed.user_name='Ed'
>>> ed.password='edspassword'
>>> session.save(ed)
>>> ed in session
True
也可以修改数据库中的其他对象。使用 Query 对象载入,然后改变:
>>> mary=query.get_by(user_name='Mary')
>>> harry=query.get_by(user_name='Harry')
>>> mary.password='marysnewpassword'
>>> harry.password='harrysnewpassword'
这时,什么东西都没有保存到数据库;我们所有的修改都在内存中。如果这时程序其他部分尝试修改’Mary’会发生什么呢?因为使用相同的会话,所以再次载入’Mary’实际上定位到相同的主键’Mary’,并且 返回同一对象实例 。这个行为用在会话中确保数据库的一致性:
>>> mary2=query.get_by(user_name='Mary')
>>> mary is mary2
True
在唯一映射中,单一的会话可以确保安全的操作对象。
如果两个不同的会话同时操作一个对象,会检测到并发;SA会使用简单的并发控制来保存对象,可以选择使用拥有更强的使用ids的检查。参考 Mapper Arguments 了解更多细节。
Tags:SQLAlchemy 指南
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接