I've enumerated fields and colnames and they are like this: fields: id text integer string
colnames: city age _id name I believe they don't match and thats why there's 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,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: 'Toronto' Francisco Costa http://franciscocosta.com On Thu, May 10, 2012 at 7:03 AM, kokoyo <hoatre2...@gmail.com> wrote: > Hi Massimo, i did it and get output (test on user_auth table): > > mongoqry_dict ={'email': 'myem...@gmail.com'} > mongofields_dict = SON([('id':1), ('first_name':1), ('last_name': > 1), ('email':1), ('password':1), ('registration_key': > 1), ('reset_password_key':1), ('registration_id':1) ]) > mongo_list_dicts = <pymongo.cursor.Cursor object at 9a809aa> > > > > On Thursday, May 10, 2012 1:52:02 PM UTC+9, Massimo Di Pierro wrote: >> >> Should be an easy fix but I need your help. Before line 4711 of dal.py >> >> return processor(rows,fields,**colnames,False) >> >> can you add >> >> print rows >> print fields >> print colnames >> >> what is the output when it fails? >> >> >> On Wednesday, 9 May 2012 05:42:56 UTC-5, Francisco Costa wrote: >>> >>> I've enumerated fields and colnames and they are like this: >>> >>> fields: >>> id >>> text >>> integer >>> string >>> >>> >>> colnames: >>> city >>> age >>> _id >>> name >>> >>> >>> I believe they don't match and thats why there's this error: >>> >>> File "/opt/web2py/gluon/dal.py", line 8134, in select >>> return adapter.select(self.query,fiel**ds,attributes) >>> File "/opt/web2py/gluon/dal.py", line 4711, 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: 'Toronto' >>> >>> >>> >>> >>> >>> On Monday, May 7, 2012 11:40:36 PM UTC+1, Massimo Di Pierro wrote: >>>> >>>> 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,fiel**ds,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,fiel**ds,attributes) >>>>>>>>> >>>>>>>>> File "/opt/web2py/gluon/dal.py", line 4290, in select >>>>>>>>> >>>>>>>>> return self.parse(rows,fields,mongofi**elds_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' >>>>>>>>> >>>>>>>>> >>>>>>>>> >