Ah! Now it makes sense - Thank you for your help. Exactly the kind of 
understanding I was looking for.

-Rob

On Wednesday, August 25, 2021 at 9:44:15 PM UTC-4 [email protected] wrote:

> On Wednesday, August 25, 2021 at 3:39:34 PM UTC-7 Rob Paire wrote:
>
>> Hi Web2py 
>> I hope someone can explains this puzzling behavior. The code below was 
>> taken from the book, and it works as given, but when I remove the  
>> "yes_or_no" condition from the field list parameters it causes 
>> a KeyError('id') error, and I don't understand why. 
>>
>>
>> *    condition = db.person.name.startswith('B')*
>> *    yes_or_no = condition.case('Yes', 'No')*
>> *    rows = db(db.person.name <http://db.person.name> == 
>> 'Bob').select(db.person.name <http://db.person.name>,yes_or_no 
>> ).as_dict()  *
>> *    rows = db(db.person.name <http://db.person.name> == 
>> 'Bob').select(db.person.ALL).as_dict()  *
>> *    ## the two select examples above works as expected*
>>
>> *    rows = db(db.person.name <http://db.person.name> == 
>> 'Bob').select(db.person.name <http://db.person.name>).as_dict()  *
>> This last example in red throws a KeyError('id') error when trying to 
>> name specific fields, but  works fine when returning ALL fields, or when a 
>> condition is specified.
>>
>
> I don't have a complete answer, but it's the as_dict() that throws the 
> error, because it's looking for a key that isn't there.  If you do 
> for row in rows:
>       print row
>  you see that row doesn't have "id" as a key; it only has 'name' as a 
> key.  as_dict() and as_list() must have a requirement for an id field, and 
> if you make your select
> rows = db(db.person.name == 'Bob').select(db.person.name
> ,db.person,id).as_dict()
> it should work as expected.
> [The requirement isn't mentioned in the book]
>
> /dps
>
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
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].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/web2py/3dd9af09-ead6-4054-9939-678989de26ffn%40googlegroups.com.

Reply via email to