Please try again.
On Monday, 7 May 2012 15:48:04 UTC-5, Francisco Costa wrote: > > missing a colon at the end of the line 4677 > > if key == 'id' > > > and now I get this error > > File "/opt/web2py/gluon/dal.py", line 8134, in select > return adapter.select(self.query,fields,attributes) > File "/opt/web2py/gluon/dal.py", line 4711, in select > return processor(rows,columns,False) > File "/opt/web2py/gluon/dal.py", line 1675, in parse > for j,colname in enumerate(colnames): > TypeError: 'bool' object is not iterable > > > maybe because of the False on line 4711 > > > > > On Monday, May 7, 2012 9:27:35 PM UTC+1, Massimo Di Pierro wrote: >> >> 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' >>>>> >>>>> >>>>>