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'


Reply via email to