Add this test case to LazyTest in test/orm/lazytest1.py

     def test_lazy_backref(self):
         class Information(object):
                pass

         class Relation(object):
                pass

         session = create_session()

         mapper(Relation, rel_table)
         mapper(Information, info_table, properties={
             'rels': relation(Relation, backref="info")
         })

         info = session.query(Information).get(1)
         session.expunge(info)

         rel = Relation()
         rel.info = info # FAILS!!

         session.save(rel) # NEVER GOT HERE...


Test result using SA r1712:

======================================================================
ERROR: test_lazy_backref (__main__.LazyTest)
----------------------------------------------------------------------
Traceback (most recent call last):
   File "test/orm/lazytest1.py", line 106, in test_lazy_backref
     rel.info = info
   File "/Users/dmiller/Code/PyOE/resources/lib/SQLAlchemy/lib/ 
sqlalchemy/attributes.py", line 26, in __set__
     self.set(None, obj, value)
   File "/Users/dmiller/Code/PyOE/resources/lib/SQLAlchemy/lib/ 
sqlalchemy/attributes.py", line 190, in set
     ext.set(event or self, obj, value, old)
   File "/Users/dmiller/Code/PyOE/resources/lib/SQLAlchemy/lib/ 
sqlalchemy/attributes.py", line 444, in set
     getattr(child.__class__, self.key).append(event, child, obj)
   File "/Users/dmiller/Code/PyOE/resources/lib/SQLAlchemy/lib/ 
sqlalchemy/attributes.py", line 222, in append
     self.get(obj).append_with_event(value, event)
   File "/Users/dmiller/Code/PyOE/resources/lib/SQLAlchemy/lib/ 
sqlalchemy/attributes.py", line 137, in get
     l = InstrumentedList(self, obj, self._adapt_list(callable_()),  
init=False)
   File "/Users/dmiller/Code/PyOE/resources/lib/SQLAlchemy/lib/ 
sqlalchemy/orm/properties.py", line 370, in lazyload
     raise exceptions.InvalidRequestError("Parent instance %s is not  
bound to a Session; lazy load operation of attribute '%s' cannot  
proceed" % (instance.__class__, self.key))
InvalidRequestError: Parent instance <class '__main__.Information'>  
is not bound to a Session; lazy load operation of attribute 'rels'  
cannot proceed

----------------------------------------------------------------------



It seems unintuitive that I can't set the rel.info attribute with a  
disconnected Information instance even though they are both (i.e. rel  
and info) disconnected from the session. Ideally it would not throw  
an exception even on session.save(rel). Is this by design?

~ Daniel



-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Sqlalchemy-users mailing list
Sqlalchemy-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users

Reply via email to