Your linennumbers do not much the code in trunk. Please try the code in
trunk. Anyway, something goes wrong in the parse(self, rows, fields,
colnames, blob_decode=True) function. I suspect mongo does not return the
columns in the order web2py think it does. Can you print the input of the
parse function?
On Monday, 7 May 2012 13:20:39 UTC-5, Francisco Costa wrote:
>
> So I have this:
>
> import sys
> import time
> from gluon.dal import DAL, Field
> mongo = DAL('mongodb://localhost:27017/tymr')
> 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==66).select()
> return dict(users=users)
>
>
> after I run *insert_users* I check in MongoDb via terminal and everything
> is correct:
> > db.user.find()
> { "_id" : ObjectId("4fa80feea34feb34f8000000"), "city" : "Toronto", "age"
> : NumberLong(66), "name" : "John" }
> { "_id" : ObjectId("4fa80feea34feb34f8000001"), "city" : "Boston", "age" :
> NumberLong(43), "name" : "Mark" }
> { "_id" : ObjectId("4fa80feea34feb34f8000002"), "city" : "Detroit", "age"
> : NumberLong(43), "name" : "Tom" }
> { "_id" : ObjectId("4fa80feea34feb34f8000003"), "city" : "Detroit", "age"
> : NumberLong(18), "name" : "Jim" }
> { "_id" : ObjectId("4fa80feea34feb34f8000004"), "age" : NumberLong(18),
> "name" : "Jack" }
> { "_id" : ObjectId("4fa80feea34feb34f8000005"), "city" : "Boston", "name"
> : "Eric" }
>
> but when I run *find_users* I get this error:
>
> File "/opt/web2py/gluon/dal.py", line 7578, in select
> return adapter.select(self.query,fields,attributes)
> File "/opt/web2py/gluon/dal.py", line 4290, in select
> return self.parse(rows,fields,mongofields_dict.keys(),False)
> File "/opt/web2py/gluon/dal.py", line 1600, in parse
> self.parse_value(value, fields[j].type,blob_decode)
> File "/opt/web2py/gluon/dal.py", line 1496, in parse_value
> return self.parsemap[key](value,field_type)
> File "/opt/web2py/gluon/dal.py", line 1562, in parse_id
> return int(value)
> ValueError: invalid literal for int() with base 10: 'Toronto'
>
>
>