Now I understand better where all these problems come from. I shall fix it 
tonight.

On Thursday, 10 May 2012 18:02:24 UTC-5, Francisco Costa wrote:
>
> i didn't understand your question..
> This is the complete code
>
> import sys
> import time
> from gluon.dal import DAL, Field
> mongo = DAL('mongodb://localhost:27017/sapo')
> mongo.define_table('user',
>                      Field('name', 'text'),
>                      Field('age',  'integer'),
>                      Field('city', 'string')
>                      )
>
> def insert_users():
>     mongo.user.insert(name='John', age=66, city='Toronto')
>     mongo.user.insert(name='Mark', age=43, city='Boston')
>     mongo.user.insert(name='Tom',  age=43, city='Detroit')
>     mongo.user.insert(name='Jim',  age=18, city='Detroit')
>     mongo.user.insert(name='Jack', age=18)
>     mongo.user.insert(name='Eric', city='Boston')
>     return 'users in database'
>
> def find_users():
>     users = mongo(mongo.user.age==18).select()
>     return dict(users=users)
>
>
>
>
> On Thursday, May 10, 2012 11:58:36 PM UTC+1, Massimo Di Pierro wrote:
>>
>> What's the model?
>>
>> On Thursday, 10 May 2012 16:27:51 UTC-5, Francisco Costa wrote:
>>>
>>> I found another problem!!
>>>
>>> if you do this:
>>>     mongo.user.insert(name='Jim',  age=18, city='Detroit')
>>>     mongo.user.insert(name='Jack', age=18)
>>>
>>> and then select
>>>     users = mongo(mongo.user.age==18).select()
>>>
>>> you don't have the field "city" in one of the rows, so you get this 
>>> error:
>>>
>>>     users = mongo(mongo.user.age==18).select()
>>>   File "/opt/web2py/gluon/dal.py", line 8123, in select
>>>     return adapter.select(self.query,fields,attributes)
>>>   File "/opt/web2py/gluon/dal.py", line 4700, in select
>>>     return processor(rows,fields,colnames,False)
>>>   File "/opt/web2py/gluon/dal.py", line 1681, in parse
>>>     self.parse_value(value, fields[j].type,blob_decode)
>>>   File "/opt/web2py/gluon/dal.py", line 1575, in parse_value
>>>     return self.parsemap[key](value,field_type)
>>>   File "/opt/web2py/gluon/dal.py", line 1641, in parse_id
>>>     return int(value)
>>> ValueError: invalid literal for int() with base 10: 'Jack'
>>>
>>>
>>>
>>> On Thursday, May 10, 2012 10:16:32 PM UTC+1, Francisco Costa wrote:
>>>>
>>>> Just add a '\' at the end of line 4664 and your are done!
>>>>
>>>> Great job Massimo!
>>>>
>>>>
>>>> On Thursday, May 10, 2012 9:12:48 PM UTC+1, Massimo Di Pierro wrote:
>>>>>
>>>>> This helps. I have another attempt to fix this in trunk. Hard to test 
>>>>> it since I do not have mongodb installed.
>>>>>
>>>>> On Thursday, 10 May 2012 08:39:22 UTC-5, Francisco Costa wrote:
>>>>>>
>>>>>> Still not working. I think Fields order is wrong.
>>>>>>
>>>>>> At the end of the select() function I write this:
>>>>>>
>>>>>>         a = []
>>>>>>         for f in fields:
>>>>>>             a.append(f.type)
>>>>>>         return dict(rows=rows, fields=a, colnames=colnames)
>>>>>>
>>>>>> and I got this:
>>>>>>
>>>>>> colnames:
>>>>>> city
>>>>>> age
>>>>>> _id
>>>>>> name
>>>>>> fields:
>>>>>> id
>>>>>> text
>>>>>> integer
>>>>>> string
>>>>>> rows:
>>>>>> Toronto
>>>>>> 66L
>>>>>> 24652490551171733682233802752L
>>>>>> John
>>>>>>
>>>>>>
>>>>>>

Reply via email to