I suspect that my understanding of both threading and Sessions is going to be found pretty wanting here; I've basically just lifted things from Pyramid/SQLAlchemy examples.
My understanding is that the framework handles threading, and that based on examples and http://www.sqlalchemy.org/docs/orm/session.html#contextual-thread-local-sessionsthis is the correct way to create a session available throughout the request: DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension())) (this is in my models file) I then use this either by doing: DBSession.query() or from models import DBSession session = DBSession() session.query() So, I'm not doing anything explicit in turns of ending the session - I guess I should be, but I had understood that this would happen on issue of next query/completion of request. Thanks, I'll look into it - I was used to Paster, where I could see the logs in real time. I now get errors in the Apache error log... but not whatever is initially causing the one I can see. Ben PS: I do have a separate process that runs in a script via cron and uses the database which would seem like a candidate, but disabling that does not stop the errors On 31 October 2011 14:38, Michael Bayer <mike...@zzzcomputing.com> wrote: > > On Oct 31, 2011, at 8:45 AM, Benjamin Sims wrote: > > Hi all, > > I'm seeing this error intermittently in my application since switching to > MySQL - it occurs on several different pages and I can't track down why: > > StatementError: Can't reconnect until invalid transaction is rolled back > (original cause: InvalidRequestError: Can't reconnect until invalid > transaction is rolled back) 'SELECT [... the same select every time, which > gets a user from the database] > > > how are you handling threading, as well as Session lifecycle ? this kind > of error usually occurs from one of two things: a. sharing Sessions, or > objects attached to them, between threads or b. no clear point of Session > start/end, incorrect handling of exceptions, etc. > > > > > I have searched on the error and read the various discussions, for example > this one: > > > http://groups.google.com/group/sqlalchemy/browse_thread/thread/a8031eefc4d5d0cd > > My understanding is that somewhere in my code I need to be ensuring that I > do rollback/commit/close when the operation is complete. The problem is... > where? Is there a way I can get a log to see the original query/point in my > code which triggers the error. > > > sure you should turn on SQLAlchemy logging fully ( > http://www.sqlalchemy.org/docs/core/engines.html?highlight=logging#configuring-logging) > , and also make sure you aren't squashing exceptions (i.e. except > MyException, e: pass type of thing) - also you'd want to add code such as > log.error("exception occurred", exc_info=True) to the point at which > exceptions are caught so that a full stack trace is written out to the log. > > > > -- > 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. > -- 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.