Hello Michael

Thanks a lot for your quick response.
I changed this loop to:
or i in range(1000):
   ....:     sleep(15)
   ....:     print "commiting"
   ....:     mm.name=u'old name'
   ....:     s.commit()
   ....:     sleep(25)
   ....:     mm.name=u'new name'
   ....:     print "commiting2"
   ....:     s.commit()

That is to say, I always have something in s.dirty when i commit. This
makes session interact with DB for sure. This loop works fine w/o any
exceptions.
So what you say will definitely solve the issue. However my doubts are
more theoretical in nature.

SQLAlchemy documentation says that if autocommit=False, on every
commit(), a new transaction is begun. So even if I do not have any
dirty changes and session need not send any data to the DB, still it
would have to contact the DB to begin a new transaction.
The behaviour as we saw, however, does not comply with this logic.
Can you please tell me where the loophole in my understanding of the
whole thing is.

Once again, Thanks a lot for your help. I really appreciate it.

Regards
Aalok Sood



On Jun 2, 8:17 pm, Michael Bayer <[email protected]> wrote:
> The Session doesn't interact with the database until statements are first 
> emitted, so while its being put into a new transaction each time with your 
> block of code, probably nothing is being sent to the DB.  If you stuck a 
> line:   s.execute("select 1") in there, that would likely wake it up.
>
> On Jun 2, 2011, at 9:32 AM, Aalok Sood wrote:
>
>
>
>
>
>
>
> > Hello Everyone
>
> > My mysql server wait_timeout is set to 35.
> > and if i run this code:
>
> > # Session s made with autocommit=False
> > mm=s.query(ss.Machine).get(1)
>
> > In [9]:
>
> > In [10]: for i in range(1000):
> >   ....:     sleep(15)
> >   ....:     print "commiting"
> >   ....:     s.commit()
> >   ....:     sleep(25)
> >   ....:     mm.name=u'new name'
> >   ....:     print "commiting2"
> >   ....:     s.commit()
>
> > Even though the second sleep is only for 25 seconds, I see an error
> > while commiting which says
> > 'Mysql server has gone away'
>
> > The SQLAlchemy documentation says that a new transaction is begun on a
> > commit(). If that is the case, I should not see the above error.
> > Maybe its an issue with commiting w/o any changes to the loaded
> > instances.
>
> > Can anyone throw some light on this.
> > Any help would be much appreciated.
>
> > --
> > You received this message because you are subscribed to the Google Groups 
> > "sqlalchemy" group.
> > To post to this group, send email to [email protected].
> > To unsubscribe from this group, send email to 
> > [email protected].
> > For more options, visit this group 
> > athttp://groups.google.com/group/sqlalchemy?hl=en.

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

Reply via email to