One word: WOW! I look forward to the next message, this way gae is really appeling. And your way of teaching is fun, really!.
Moreover, Massimo, can't this method be the default behaviour to IS_IN_DB when running on gae? I't seems a good fit. Just my 2 cents. On Sun, Jun 27, 2010 at 4:36 PM, dlypka <dly...@gmail.com> wrote: > Assuming you have > try: > from gluon.contrib.gql import * # if running on Google App > Engine > except: > db=SQLDB('sqlite://storage.db') # if not, use SQLite or > other DB - Used by T2 > datastoretype = 'SQL' > else: > db=GQLDB() # connect to Googl > datastoretype = 'GAE' > > # So now, db is the GAE db > > # To use those Collections in the Reference properites, you need to > insert NATIVE GAE references, > # so you need to somehow find the GAE entity instance reference given > a web2py sql row > > # Here is the 'Stargate / wormhole' code which takes you from web2py > back down into the native GAE Datastore alternate universe: > > > # So if you have a web2py table name 'ChildTable': > > web2pyChildTableClass = db.ChildTable # gives the web2py Table > class > > theNativeGAEChildTableClass = web2pyChildTableClass._tableobj # > magic... into GAE > > # ================================================================ > > # Now do a native GAE query to find the native GAE instance so it > # can be put into the Reference collection: > > nativeGAE ChildTableQuery = theNativeGAEChildTableClass.all() > > nativeGAEChildTableQuery.filter('id =', 25) # get for id = 25 > > nativeresults = nativeGAEChildTableQuery.fetch(limit=1) > > myGAENativeChild = nativeresults[0] > > # Now myGAENativeChild can be inserted into the native GAE Reference > collection > > - Dave Lypka > > On Jun 26, 5:48 am, Carles Gonzalez <carle...@gmail.com> wrote: >> Very interesting, i didn't know about collection_name and the associated >> query. >> >> You are shedding some light on doing relationships the GAE way. >> >> Thanks again. >> >> >> >> On Sat, Jun 26, 2010 at 8:52 AM, dlypka <dly...@gmail.com> wrote: >> >> > For starters: >> >> > Refer to >> >http://arbingersys.blogspot.com/2008/04/google-app-engine-one-to-many... >> >> > And Here is the posting about using native GAE properties >> >> >http://groups.google.com/group/web2py/browse_thread/thread/7112ef7dee... >> >> > So for example you would do >> >> > from gluon.contrib.gql import gae >> > : >> > : >> > db.define_table('ChildItem', >> > # NOTE: web2py provides the 'id' >> > column automatically >> > db.Field('idParentFolder','reference >> > MyParent'), >> > db.Field('name','text'), >> > db.Field('gaeParentInstance', >> > gae.ReferenceProperty(MyParent, >> > required=False, >> > collection_name='linksFromChildItemToParent'))) >> >> > ) >> >> > and define the parent class in a similar fashion. >> >> > It is also necessary to add some plumbing to find and track the native >> > GAE references >> > which lie underneath the web2py sql objects because the native refs >> > have to be >> > put into the collections. >> >> > I'll provide more details in some followup posts. >> >> > On Jun 25, 2:48 pm, Carles <carle...@gmail.com> wrote: >> >> Thanks a lot Dave. >> >> >> There isn't a deadline, tale your time :) >> >> >> Carles >> >> >> El 25/06/2010, a las 20:42, dlypka <dly...@gmail.com> escribió: >> >> >> > OK will do - please give me a few days... >> >> >> > On Jun 24, 8:43 pm, Carles Gonzalez <carle...@gmail.com> wrote: >> >> >> Not to be annoying, but can you post an example? >> >> >> >> Just to organize the things in my head... >> >> >> >> Thanks again. >> >> >> >> On Fri, Jun 25, 2010 at 2:41 AM, Carles Gonzalez <carle...@gmail.com> >> >> >> wrote: >> >> >>> Very interesting! >> >> >> >>> I'll try tomorrow. >> >> >> >>> Thanks a lot, Dave. >> >> >> >>> On Fri, Jun 25, 2010 at 1:21 AM, dlypka <dly...@gmail.com> wrote: >> >> >>>> I've done a parent - to - many child GAE / web2py implementation >> >> >>>> using >> >> >>>> SelfReference fields (or you can use Reference as well) using the >> >> >>>> technique for adding native GAE fields into a web2py table >> >> >>>> definition. >> >> >> >>>> It gives fantastic retrieval performance because GAE automatically >> >> >>>> adds the link from the child back into the parent's reference list >> >> >>>> at the time you create each child. When you later query for the >> >> >>>> parent, voila GAE retrieves all the child entities along with it in >> >> >>>> one backend call! >> >> >> >>>> Hopefully this technique is relevant to your application. >> >> >> >>>> I also develop some other tricks for inheriting native GAE classes >> >> >>>> into your web2py model, though >> >> >>>> this is less attractive perhaps now that GAE native properties can be >> >> >>>> directly declared in web2py tables. >> >> >> >>>> - Dave Lypka. >> >> >> >>>> On Jun 21, 10:25 am, Carles Gonzalez <carle...@gmail.com> wrote: >> >> >>>>> Hi, >> >> >> >>>>> I have developed some applications in web2py, and 2 are running >> >> >>>>> currently in gae, but now i have serious problem. >> >> >> >>>>> My current project is a social application, and when i design >> >> >>>>> (example) the tables to make an user follow the actions other user >> >> >>>>> (twitter like) I find that many-to-many relationships in app-engine >> >> >>>>> are not easily supported. >> >> >> >>>>> From my understanding using the tools present in web2py right i >> >> >>>>> would >> >> >>>>> need to do a lot of processing in memory, an that would hurt >> >> >>>>> performance greatly. >> >> >> >>>>> The pattern proposed by app store developers uses lists and "parent" >> >> >>>>> relationship: >> >> >> >>>>> class Message(db.Model): >> >> >>>>> sender = db.StringProperty() >> >> >>>>> body = db.TextProperty() >> >> >> >>>>> class MessageIndex(db.Model): >> >> >>>>> receivers = db.StringListProperty() >> >> >> >>>>> indexes = MessageIndex.all(keys_only = True).filter('receivers = ', >> >> >>>>> user_id) >> >> >>>>> keys = [k.parent() for k in indexes) >> >> >>>>> messages = db.get(keys) >> >> >> >>>>> For using that pattern in web2py I would need a method for >> >> >>>>> specifying >> >> >>>>> the parent of a model instance. Can I specify that relationship >> >> >>>>> using >> >> >>>>> any method I don't know? If not, would it be hard to implement? >> >> >> >>>>> Thanks in advance!