Ok, now i understand. If i create a 2nd instance of crud for example: def xyz(): webgrid = local_import('webgrid') tmpdb=SQLDB('sqlite:memory:') crudtmp=Crud(globals(),tmpdb) tmpdb.define_table("identity", db.Field("user","string",default=""), db.Field("ip","string",default=""), db.Field("type","string",default="")) user='user' ipreadeable='ip' type='type' tmpdb.identity.insert(user=user,ip=ipreadeable,type=type)
grid = webgrid.WebGrid(crudtmp) grid.datasource = tmpdb(tmpdb.identity.id>0).select() return dict(grid=grid()) I can choose any db source i like. Thanks a lot. Stefan On May 9, 1:29 pm, "mr.freeze" <nat...@freezable.com> wrote: > No, the issue is not related to WebGrid. The problem is that crud.db > (which is essentially passed to WebGrid) is a different object than > your second DAL instance (even though it has the same name) and your > WebGrid data source is attempting to use a table from the second DAL > instance. You can see what I mean with this controller action: > > def tables(): > print crud.db.tables > print db.tables > > On May 9, 3:57 am, winti <stefan.winterb...@gmail.com> wrote: > > > > > It's true, when i delete/adjust the db definition statement it's > > working. > > It seems, when i choose another name as "db" webgrid can not handle > > this. Is that true ? > > > Stefan > > > On May 8, 9:59 pm, "mr.freeze" <nat...@freezable.com> wrote: > > > > Did you delete the default DAL declaration at the top of db.py? Your > > > code works for me. > > > > On May 8, 2:04 pm, winti <stefan.winterb...@gmail.com> wrote: > > > > > i changed it to myid and i get a error on: > > > > KeyError: 'myid' > > > > > Stefan > > > > > On May 8, 8:51 pm, "mr.freeze" <nat...@freezable.com> wrote: > > > > > > 'identity' is probably a reserved word in sqlite. Try changing it to > > > > > something else. > > > > > > On May 8, 1:36 pm, winti <stefan.winterb...@gmail.com> wrote: > > > > > > > Hello, > > > > > > in a controller i define a temp db and want to return the results > > > > > > with > > > > > > webgrid to a view. > > > > > > I get a Keyerror on 'identity'. > > > > > > > Traceback (most recent call last): > > > > > > File "/data/projects/frameworks/web2py/applications/gluon/ > > > > > > restricted.py", line 178, in restricted > > > > > > exec ccode in environment > > > > > > File "/data/projects/frameworks/web2py/applications/applications/ > > > > > > eDir/controllers/default.py", line 190, in <module> > > > > > > File "/data/projects/frameworks/web2py/applications/gluon/ > > > > > > globals.py", line 96, in <lambda> > > > > > > self._caller = lambda f: f() > > > > > > File "/data/projects/frameworks/web2py/applications/applications/ > > > > > > eDir/controllers/default.py", line 187, in queryaddr > > > > > > return dict(resi1=res,grid=grid()) > > > > > > File "/data/projects/frameworks/web2py/applications/applications/ > > > > > > eDir/modules/webgrid.py", line 229, in __call__ > > > > > > field = db[t][f] > > > > > > File "/data/projects/frameworks/web2py/applications/gluon/sql.py", > > > > > > line 1318, in __getitem__ > > > > > > return dict.__getitem__(self, str(key)) > > > > > > KeyError: 'identity' > > > > > > > def xyz(): > > > > > > > db=SQLDB('sqlite:memory:') > > > > > > db.define_table("identity", > > > > > > db.Field("user","string",default=""), > > > > > > db.Field("ip","string",default=""), > > > > > > db.Field("type","string",default="")) > > > > > > > ... > > > > > > ... > > > > > > .... > > > > > > db.identity.insert(user=user,ip=ipreadeable,type=type) > > > > > > ... > > > > > > ... > > > > > > > grid = webgrid.WebGrid(crud) > > > > > > grid.datasource = db(db.identity.id<0).select() > > > > > > > Any idea > > > > > > > Stefan