sorry about my typo.  i can never remember as_dict!

for my views i generally access the objects as dictionaries, using the 
['key'] notation.  if you like you may cast the items back to web2py 
Storage objects, which will then have accessors like the Row object they 
were (Row is an extension of Storage i believe)

there was some attempt not too long ago to try and make cacheable work for 
GAE as documented here: 
http://web2py.com/books/default/chapter/29/06?search=cacheable#Caching-selects  
i'm not sure if that is yet in a stable release, or if it has been fully 
tested.

cfh

On Tuesday, February 19, 2013 7:55:25 AM UTC-8, Andy W wrote:
>
> Thanks for the input.
>
> Niphlod:  I tried cacheable=True but seemed to make no difference on GAE 
> SDK
>
> Christian: adding ".as_dict()" rather than the suggested ".to_dict" on the 
> select statement does seem to work. The caching code then becomes:
>
>    students = cache.ram('students',
>                         lambda:db(db.student.id>0).select(db.student.id, 
>                             db.student.family_name,
>                             ...
>                             db.student.student_age).as_dict(),
>                         3600)
>
> This seems to read to/from memcache correctly, but students is now a 
> dictionary rather than a row object, which seems to break my views. In the 
> past I iterated through the row objects to list them on screen using 
> something like:
>
> {{for student in students:}}
>     <tr>
>        <td>{{=student.family_name}}</td>
>         ...
>        <td>{{=student.student_age}}</td>
>     </tr>
> {{pass}}
>
> This doesn't seem to work now that students is a dictionary object.
> No idea how I need to change this!
>
> Thanks again,
>
> Andy
>
> On Tuesday, February 19, 2013 3:07:20 AM UTC+4, howesc wrote:
>>
>> cacheable=True is a newish option to selects right?  i've not yet used 
>> it....and had forgotten about it.
>>
>> cfh
>>
>> On Monday, February 18, 2013 7:17:02 AM UTC-8, Niphlod wrote:
>>>
>>> cacheable=True does not help ?
>>>
>>> On Monday, February 18, 2013 4:11:13 PM UTC+1, howesc wrote:
>>>>
>>>> ah yes....
>>>>
>>>> the Rows() object returned from a select is not pickable.
>>>>
>>>> i do this a lot:
>>>>
>>>>     students = cache.ram('students',
>>>>                         lambda:db(db.student.id>0).select(db.student.id
>>>> , 
>>>>                             db.student.family_name,
>>>>                             ...
>>>>                             db.student.student_age).to_dict(),
>>>>                         3600)
>>>>
>>>>
>>>> On Sunday, February 17, 2013 10:09:18 PM UTC-8, Andy W wrote:
>>>>>
>>>>> Thanks for the feedback Christian.
>>>>>
>>>>> It seems to be this that causes the problem on GAE but works on sqlite:
>>>>>
>>>>>     students = cache.ram('students',
>>>>>                         lambda:db(db.student.id>0).select(
>>>>> db.student.id, 
>>>>>                             db.student.family_name,
>>>>>                             ...
>>>>>                             db.student.student_age),
>>>>>                         3600)
>>>>>
>>>>> Any ideas?
>>>>>
>>>>> Thanks,
>>>>> Andy
>>>>>
>>>>>>
>>>>>>>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to