Found another error, but I can't figure out an solution. But it must be rather simple.
I use the following model and without auth ofcourse if not request.env.web2py_runtime_gae: ## if NOT running on Google App Engine use SQLite or other DB dbp = DAL('mysql://root:MerMB#2#@192.168.2.29/performance') <-- this one doesn't matter right know tdb = DAL('mongodb://mb1/db') <-- Connects perfectly, but tdb.define_table('blog', Field('name','string')) tdb.define_table('category', Field('name',"string")) tdb.define_table('post', Field('category',tdb.category), Field('blog',tdb.blog), Field('title',"string"), Field('createdt',"datetime",default=datetime.datetime.now)) tdb.define_table('comment', Field('content', "text"), Field('createdt',"datetime",default=datetime.datetime.now)) tdb.define_table('likepost', Field('likescomment','boolean'), Field('comment',tdb.comment)) tdb.define_table('postgps', Field('latitude',"double"), Field('longitude',"double"), Field('post',tdb.post)) #Modifications too DAL def insert(self,table,fields): ctable = self.connection[table._tablename] values = dict((k,self.represent(v,table[k].type)) for k,v in fields) <-- This doesn't work ctable.insert(values) return uuid2int(id) def create_table(self, table, migrate=True, fake_migrate=False, polymodel=None): capped=0 #<process a general solution for this in the table name? if capped==0: pass else: <-- This peace of code will not run, but I'll explain later try: if capped > 10000000000 or capped < 1: """ #TODO throw new Error that this is an illigal size? #http://api.mongodb.org/python/current/api/pymongo/ database.html (create_collection()) If I understood well, then capped collections are quite limited in size But they also clean themselves, so maybe we could implement a general log structure on this type of collections This part of the method cant't be reached right now, since we can not implement the capped argument """ pass else: self.connection.create_collection(table, size=capped, capped=True) except CollectionInvalid: pass #TODO converted uncapped collection to capped collection #create capped tables with a fixed length for performance Traceback (most recent call last): File "/home/beheerder/web2py/gluon/restricted.py", line 204, in restricted exec ccode in environment File "/home/beheerder/web2py/applications/pt/controllers/ default.py", line 112, in <module> File "/home/beheerder/web2py/gluon/globals.py", line 149, in <lambda> self._caller = lambda f: f() File "/home/beheerder/web2py/applications/pt/controllers/ default.py", line 73, in add_blog tdb.blog.insert(name=request.vars.name) File "/home/beheerder/web2py/gluon/dal.py", line 5091, in insert return self._db._adapter.insert(self,self._listify(fields)) File "/home/beheerder/web2py/gluon/dal.py", line 3754, in insert values = dict((k,self.represent(v,table[k].type)) for k,v in fields) File "/home/beheerder/web2py/gluon/dal.py", line 3754, in <genexpr> values = dict((k,self.represent(v,table[k].type)) for k,v in fields) File "/home/beheerder/web2py/gluon/dal.py", line 4976, in __getitem__ return dict.__getitem__(self, str(key)) KeyError: 'blog.name' Any idea? My suggestion is that the fields are not loaded some how, because of the create function? On 21 okt, 17:01, Massimo Di Pierro <massimo.dipie...@gmail.com> wrote: > yes. > > On Oct 21, 2:55 am,MarkBreedveld <m.breedv...@solcon.nl> wrote: > > > > > > > > > Dear Massimo, > > > I downloaded the trunk and I am currently testing the MongoDB Adapter > > and I can tell that inserting currently isn't working. Also the > > creation of tables doesn't work. > > > First question, shall I put the bugs and improvements that I find in > > the Issue list or just in this discussion? > > > Secondly, the create_table method, is it possible to just skip the > > function with a pass command? Cause collection in mongodb are created > > on first insert of an document. There are capped collections in > > MongoDB which offer better performance, but there data size is fixed. > > My advise would be that by default the model is just passed(if not > > needed somewhere else in web2py) and we could later implement the > > capped collections. Because I want to have the adapter working first. > > > def create_table(self, table, migrate=True, fake_migrate=False, > > polymodel=None): > > pass > > #May capped collection > > here?http://www.mongodb.org/display/DOCS/Capped+Collections > > #because pymongo create collection on first insert > > (inserting a > > document)http://api.mongodb.org/python/2.0/tutorial.html > > > RegardsMark,