2011-10-30 104 views
3

我建立我的第一个金字塔的应用程序(从塔来),我试图找出如何处理与pyramid_tm例外...例如,在主塔我会做类似如何处理金字塔事务管理器的异常?

try: 
    Session.add(object) 
    Session.commit() 
except IntegrityError: 
    Session.rollback() 
    flash("Object already present") 

但这应该如何与pyramid_tm完成?

回答

5

使用Session.flush()而不是Session.commit()

通过pyramid_tm,您不应该(需要)自己在请求处理代码中执行commit()

+0

非常感谢:-) – Joril

+1

这完全解决了我的问题。但是,我仍然不清楚在哪里找到这个,例如在金字塔文档中。似乎金字塔文档应该有这个(或至少一个指针),因为默认的脚手架结合了直接sqlalchemy和zope.sqlalchemy - 让一个初级用户不确定如何导航! –