commit() by default expires all the attributes on all instances. See the documentation on "Using the Session" for details about this.
Also a single Session should never be accessed by concurrent threads, referring to the previous email where you got a SQLite error regarding concurrency. On Feb 26, 2009, at 2:36 AM, 一首诗 wrote: > > A little more code to explain: > > Before commit, print u2 doesn't do trigger query. > After commit, print u2 trigger a query, even if it has different > primary key with u1. > > So this means : when u update one instance, the other instance of the > same type will be in "expired" state. > > ############################## > u1 = session.merge(u1) > > print "------------------" > print u2 > > session.commit() > > print "------------------" > print us > ############################## > > On Feb 26, 2:17 pm, 一首诗 <newpt...@gmail.com> wrote: >> Hi all, >> >> I have 2 user instance in a session and after I have update one of it >> like this >> >> --------------------------------------------------------------------------- >> ------------------------ >> >> u = session.merge(u) >> session.commit >> session.refresh(u) >> >> --------------------------------------------------------------------------- >> ------------------------ >> >> Later, I found that another instance of the same class type in the >> session's attributes was cleared, and triggered a database query. >> >> (I found this because I am using sqlite, which forbids access the >> same >> database in more than one thread) >> >> I will make some debug to find out what happened. > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---