Hi Massimo, actually I do not know, it seems to be a very odd error;
I've just restarted web2py and the problem has seemed gone but
unfortunately, after a while it came back in a totally different
fashion:

Traceback (most recent call last):
  File "/home/paolo/Dropbox/git/web2py/gluon/restricted.py", line 209,
in restricted
    exec ccode in environment
  File 
"/home/paolo/Dropbox/git/web2py/applications/bikend/views/route/routesListWrapper.html",
line 981, in <module>
  File "/home/paolo/Dropbox/git/web2py/applications/bikend/models/routeDB.py",
line 27, in get_route_a
    content = get_route_img(id=route.route.id)
  File "/home/paolo/Dropbox/git/web2py/applications/bikend/models/routeDB.py",
line 56, in get_route_img
    img = get_img(route.route.photo_id, True)
  File "/home/paolo/Dropbox/git/web2py/applications/bikend/models/1_extra.py",
line 94, in get_img
    if picture and picture.picture:
  File "/home/paolo/Dropbox/git/web2py/gluon/dal.py", line 7273, in __getattr__
    self.__allocate()
  File "/home/paolo/Dropbox/git/web2py/gluon/dal.py", line 7266, in __allocate
    self._record = self._table[int(self)]
  File "/home/paolo/Dropbox/git/web2py/gluon/dal.py", line 7551, in __getitem__
    return self._db(self._id == key).select(limitby=(0,1)).first()
  File "/home/paolo/Dropbox/git/web2py/gluon/dal.py", line 8682, in select
    return adapter.select(self.query,fields,attributes)
  File "/home/paolo/Dropbox/git/web2py/gluon/dal.py", line 2022, in select
    return super(SQLiteAdapter, self).select(query, fields, attributes)
  File "/home/paolo/Dropbox/git/web2py/gluon/dal.py", line 1522, in select
    return self._select_aux(sql,fields,attributes)
  File "/home/paolo/Dropbox/git/web2py/gluon/dal.py", line 1495, in _select_aux
    self.execute(sql)
  File "/home/paolo/Dropbox/git/web2py/gluon/dal.py", line 1598, in execute
    return self.log_execute(*a, **b)
  File "/home/paolo/Dropbox/git/web2py/gluon/dal.py", line 1592, in log_execute
    ret = self.cursor.execute(*a, **b)
ProgrammingError: Cannot operate on a closed database.

I do not know, maybe there is something wrong with my application
rather than with web2py
Paolo


2012/8/30 Massimo Di Pierro <massimo.dipie...@gmail.com>:
> I tried this (2.0.2) and I cannot reproduce the problem:
>
> db = DAL(lazy_tables=True)
>
> db.define_table('reviews_like',
>                  Field('review_id', 'reference reviews'),
>                  Field('helpful', 'boolean'))
>
> db.define_table('reviews',
>                 Field('title'))
>
> db.reviews.pos = Field.Lazy(lambda row: db((db.reviews_like.review_id == ro\
> w.reviews.id) & (db.reviews_like.helpful == True)).count() )
> db.reviews.neg = Field.Lazy(lambda row: db((db.reviews_like.review_id == ro\
> w.reviews.id) & (db.reviews_like.helpful == False)).count() )
> id = db.reviews.insert(title='xxx')
> db.reviews_like.insert(review_id=id, helpful=True)
> print db(db.reviews_like.review_id==db.reviews.id).select()
>
>
>
> On Thursday, 30 August 2012 11:16:27 UTC-5, Paolo wrote:
>>
>> Dear all,
>> I just updated web2py and after turning on the lazy_table I got:
>>
>> Traceback (most recent call last):
>>   File "/home/paolo/Dropbox/git/web2py/gluon/restricted.py", line 209, in
>> restricted
>>     exec ccode in environment
>>   File
>> "/home/paolo/Dropbox/git/web2py/applications/bikend/views/load/reviewsFilter.html",
>> line 57, in <module>
>>     var str = '{{=T('Route ')}}<small>NAME </small><b class="caret">
>> </b>'.replace(/NAME/gi, $(this).text());
>>   File "/home/paolo/Dropbox/git/web2py/gluon/dal.py", line 8810, in
>> __call__
>>     return self.method(self.row,*args,**kwargs)
>>   File "/home/paolo/Dropbox/git/web2py/applications/bikend/models/db.py",
>> line 427, in <lambda>
>>     db.reviews.pos = Field.Lazy(lambda row: db((db.reviews_like.review_id
>> == row.reviews.id) & (db.reviews_like.helpful == True)).count() )
>>   File "/home/paolo/Dropbox/git/web2py/gluon/dal.py", line 8675, in count
>>     return db._adapter.count(self.query,distinct)
>>   File "/home/paolo/Dropbox/git/web2py/gluon/dal.py", line 1542, in count
>>     self.execute(self._count(query, distinct))
>>   File "/home/paolo/Dropbox/git/web2py/gluon/dal.py", line 1598, in
>> execute
>>     return self.log_execute(*a, **b)
>>   File "/home/paolo/Dropbox/git/web2py/gluon/dal.py", line 1592, in
>> log_execute
>>     ret = self.cursor.execute(*a, **b)
>> ProgrammingError: Cannot operate on a closed database.
>>
>>
>> The table involved in the error is defined as follows:
>>
>> db.define_table('reviews_like',
>>                  Field('review_id', 'reference reviews'),
>>                  Field('helpful', 'boolean',
>>                        widget = BuildRadioButtonWidget),
>>                  Field('created_on', 'datetime', default=request.now,
>>                        writable = False, readable = False),
>>                  Field('user_id', db.auth_user, default=auth.user_id,
>>                        writable = False, readable = False)
>> )
>>
>> db.define_table('reviews',
>>                 Field('route_id', 'reference route', default=db.route.id),
>>                 Field('rating', 'integer',requires=IS_IN_SET(range(1,6))),
>>                 Field('title', 'string',
>> requires=(IS_NOT_EMPTY(error_message=T('Enter a
>> title')),IS_LENGTH(250,error_message=T('Warning, title too long')),
>> IS_LENGTH(minsize=3, error_message=T('Warning, title too short')))),
>>                 Field('description', 'text',
>> requires=(IS_NOT_EMPTY(error_message=T('Please, enter a
>> description')),IS_LENGTH(250,error_message=T('Warning, description too
>> long')), IS_LENGTH(minsize=75, error_message=T('Warning, the description is
>> too short, reviews must be at least 75 characters long.')))),
>>                 auth.signature,
>>
>> )
>> db.reviews.route_id.readable = False
>> db.reviews.route_id.writable = False
>> db.reviews.rating.widget = starWidget
>> db.reviews.pos = Field.Lazy(lambda row: db((db.reviews_like.review_id ==
>> row.reviews.id) & (db.reviews_like.helpful == True)).count() )
>> db.reviews.neg = Field.Lazy(lambda row: db((db.reviews_like.review_id ==
>> row.reviews.id) & (db.reviews_like.helpful == False)).count() )
>>
>> what is wrong ?
>>
>> Cheers
>> Paolo
>>
>>
>>
> --
>
>
>



-- 
 Paolo

-- 



Reply via email to