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.