On Jun 1, 2010, at 1:14 AM, David wrote:

> Thanks for the response, Michael.  Sorry, I forgot to mention how we
> are committing the data.  Here is a skinned-down version of the code
> that returns "old" data when switching between web servers.
> 
> engine = sqlalchemy.create_engine(ALCHEMY_DATABASE)
> Session = sqlalchemy.orm.sessionmaker(bind=engine)
> session = Session()
> session.expire_all()
> 
> user_query = session.query(User)
> user_data = user.get('USERID')
> #session.refresh(user_data)  <--- this seems to fix the problem
> 
> try:
>    user_data.var = user_data.var + 1
>    session.add(user_data)
>    session.commit()
> except:
>    session.rollback()
> 
> 
> class User(Base):
> 
>    __table__ = Table('user', Base.metadata,
>        Column('user_id', String(10), primary_key=True),
>        Column('var', Integer, default=0, server_default='0'),
>        mysql_engine='InnoDB'
>    )
> 
> 
> Interestingly enough, adding "session.refresh(user_data)" right after
> the "get" seems to be fixing the problem.  But I'm confused, since I
> thought "session.expire_all()" should have the same effect.  I don't
> want to add a "refresh" after every get in our code, since I'm afraid
> it might require multiple calls to the database.

the expire_all has the same effect, yes.   You'd need to reproduce your 
behavior in an isolated test case to illustrate what you're doing.   For 
example I see a "user.get()" up there, would need to know what that is, etc.


-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalch...@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