well thats my contribution for today, this is mostly rewritten: 
http://sqlalchemy.readthedocs.org/en/rel_0_9/orm/session.html#cascades


On Mar 15, 2014, at 12:07 PM, Gery . <[email protected]> wrote:

> I also appreciate such example! Hope simple terminology with a simple example 
> can replace the sometimes complicated documentation.
> 
> Sent from my i386
> 
> On Mar 15, 2014, at 16:31, "Michael Bayer" <[email protected]> wrote:
> 
> you have every reason to be confused by that paragraph, which is using way 
> too much terminology to express what's important there.   at some point, we 
> had to add a behavior which I thought would be confusing to people, so that 
> paragraph tries badly to explain what it is.  I should replace it with just a 
> simple sentence and an example.  Here's the example:
> 
> from sqlalchemy import *
> from sqlalchemy.orm import *
> from sqlalchemy.ext.declarative import declarative_base
> 
> Base = declarative_base()
> 
> class A(Base):
>     __tablename__ = 'a'
> 
>     id = Column(Integer, primary_key=True)
>     bs = relationship("B")
> 
> class B(Base):
>     __tablename__ = 'b'
> 
>     id = Column(Integer, primary_key=True)
>     a_id = Column(Integer, ForeignKey('a.id'))
> 
> e = create_engine("sqlite://", echo=True)
> Base.metadata.create_all(e)
> 
> sess = Session(e)
> a1 = A()
> b1 = B()
> 
> a1.bs = [b1]
> 
> sess.add(a1)
> sess.commit()
> 
> a1.bs  # refresh a1.bs
> sess.close()  # close out - sess is no longer associated with a1, b1
> 
> # all new session
> sess2 = Session(e)
> 
> a1.bs.remove(b1)
> 
> sess2.add(a1)
> 
> # b1 was removed from a1.bs, but
> # is in sess2 anyway! surprising!
> assert b1 in sess2
> 
> # because we need it for the flush, it's still here:
> from sqlalchemy import inspect
> print inspect(a1).attrs.bs.history.deleted
> 
> 
> 
> 
> 
> 
> On Mar 15, 2014, at 5:26 AM, Bao Niu <[email protected]> wrote:
> 
>> I've read this paragraph 
>> (http://docs.sqlalchemy.org/en/latest/orm/session.html#unitofwork-cascades) 
>> many many times and still can't think of a practical example of what is 
>> being discussed.
>> 
>> save-update cascade also cascades the pending history of the target 
>> attribute, meaning that objects which were removed from a scalar or 
>> collection attribute whose changes have not yet been flushed are also placed 
>> into the target session. This is because they may have foreign key 
>> attributes present which will need to be updated to no longer refer to the 
>> parent.
>> 
>> I don't think my English is the main stumbling block here because I 
>> understand the meaning of each word, but as soon as I'm putting them 
>> together I'm completely lost. Could someone give a simple example here to 
>> illustrate the main point in this paragraph please? Highly appreciated. 
>> Thanks.
>> 
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "sqlalchemy" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected].
>> To post to this group, send email to [email protected].
>> Visit this group at http://groups.google.com/group/sqlalchemy.
>> For more options, visit https://groups.google.com/d/optout.
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "sqlalchemy" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/sqlalchemy.
> For more options, visit https://groups.google.com/d/optout.
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "sqlalchemy" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/sqlalchemy.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to