On Nov 16, 2012, at 7:42 AM, sajuptpm wrote:

> 
> 
> The code bellow throwing error "ObjectDeletedError: Instance 'xxx' has been 
> deleted." when a exception throwing from "method1".
> Eroor in line method1(db_obj1.id),  db_obj1.id failing.
> 
> How fix this issue.
> 
> 
> def main_method():
>     DBSession.add(db_obj1)
>     DBSession.fush()
> 
>     for x in lst:
>         try:
>             method1(db_obj1.id)
>         excpt Exception, ex:
>             pass
> 
> 
> def method1(id):
>     try:    
>         s1 = DBSession()
>         s1.begin_nested()
> 
>         db_obj2 = create_new_obj(id)
>         DBSession.add(db_obj1)
>         DBSession.fush()
> 
>         if some-codition:
>             raise Exception("Failedd")
> 
>         s1.commit()
>     except Exception, ex:
>         s1.rollback()
>         raise ex

this code is not written in a way that makes sense, as "db_obj2" is not 
referenced and it's not clear where "db_obj1" comes from inside of method1().  
The use of DBSession.<method>() vs. s1.<method>() also suggests some details 
are being omitted here.    

So without being able to tell what you're actually doing, the error means that 
you are attempting to refer to an attribute on an object (like 
my_object.some_attribute) after a transaction has been rolled back or 
committed, and the row to which my_object refers to no longer exists.  This row 
might not exist because the transaction in which it was inserted was rolled 
back, or the row was deleted by a different transaction.

After a transaction ends, accessing an attribute on your object will re-emit a 
SELECT to the database in a new transaction.

Turning on echo=True or echo='debug' on your create_engine() can be a valuable 
tool in debugging exactly what is happening in your code, including the 
sequence of SELECT statements.


-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com.
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to