I've got it working now. The external module contains generators and the db access that raised the ProgrammingError was within one of the generators. The db reference is passed in a global environment dictionary (using cache.ram and the ThreadSafe class recommended in another topic in this forum). I was initializing the 'DB' member of the dictionary during the first access to the index page and assuming it would remain a valid reference when accessed later. Apparently that's not the case. I'm able to make the problem go away by refreshing the value of 'DB' in my environment dictionary just before stepping into the generators via the send() method.
So if I'm understanding this correctly, it looks like web2py creates a new instance of the db object with every page request. Is that correct? Thanks for all your help, Mike On Sep 1, 10:25 am, MikeEllis <[email protected]> wrote: > Hi Massimo, > Same outcome with 1.66.2. I'm testing with web2py unzipped from > source and my init app cp'ed from my version controlled 1.64 into the > 1.66.2 applications directory. Seems to run correctly except when I > come to the part that tries to insert a record into a table. > Thanks, > Mike > > On Aug 31, 8:55 pm, mdipierro <[email protected]> wrote: > > > Any chance you can try the current version and see if you can > > reproduce this error?. > > > On Aug 31, 5:45 pm, MikeEllis <[email protected]> wrote: > > > > Hi all, > > > > I'm passing the db object into an external module that needs to insert > > > some records into a table in the database. Not sure what the > > > following error means. Looks like web2py closed the db. > > > > I'm running Version 1.64.3 (2009-06-19 07:35:40) on OS X 10.5.8 > > > (Leopard). I'm using the built-in SQLite db. > > > > Thanks, > > > Mike > > > > Traceback (most recent call last): > > > File "/Users/mellis/trunk/python/web2py/gluon/restricted.py", line > > > 107, in restricted > > > exec ccode in environment > > > File "/Users/mellis/trunk/python/web2py/applications/init/ > > > controllers/default.py", line 189, in <module> > > > File "/Users/mellis/trunk/python/web2py/gluon/globals.py", line 100, > > > in <lambda> > > > self._caller = lambda f: f() > > > File "/Users/mellis/trunk/python/web2py/applications/init/ > > > controllers/default.py", line 120, in pdainterfacehandler > > > response.page = env['STATEMACHINE'].send(env) > > > File "/Users/mellis/xlrn/lib/python2.5/site-packages/ > > > pdainterface.py", line 960, in statemachine > > > page = psm.send(environ) > > > File "/Users/mellis/xlrn/lib/python2.5/site-packages/ > > > pdainterface.py", line 478, in devicecontrolPSM > > > body = performwalk.next() > > > File "/Users/mellis/xlrn/lib/python2.5/site-packages/ > > > pdainterface.py", line 622, in performwalkPSM > > > scriptevent2db > > > (shared.db,walkname,'SCRIPT_START',device,shared.location,shared.filename) > > > File "/Users/mellis/xlrn/lib/python2.5/site-packages/ > > > pdainterface.py", line 221, in scriptevent2db > > > imdfile=imdfile) > > > File "/Users/mellis/trunk/python/web2py/gluon/sql.py", line 1470, in > > > insert > > > self._db._execute(query) > > > File "/Users/mellis/trunk/python/web2py/gluon/sql.py", line 697, in > > > <lambda> > > > self._execute = lambda *a, **b: self._cursor.execute(*a, **b) > > > ProgrammingError: Cannot operate on a closed database. > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "web2py-users" 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/web2py?hl=en -~----------~----~----~----~------~----~------~--~---

