Thanks for your help and check on this. I just committed a fix in trunk that should address it. Please let me know.
On Monday, 7 May 2012 15:19:40 UTC-5, Francisco Costa wrote: > > I think that the mongofields_dict.keys() don't match to the data in the > rows > > mongofields_dict: > id > name > age > city > rows: > Toronto > 66L > 24652490551171733682233802752L > John > > > On Monday, May 7, 2012 8:42:33 PM UTC+1, Massimo Di Pierro wrote: >> >> 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' >>> >>> >>>