Hey Jeff - sorry for the confusion. The idea was that one would be able to get the unique id from an GOOG and then do a db.put with that id as an arg. For example, let's say I want to create two entities, with each referring to each other. I need to do three db.put operations:
a = Foo() db.put(a) b = Foo() b.ref = a.key() db.put(b) a.ref = b.key() db.put(a) One would hope to be able to do this with two db.puts. Thanks, Jeff 2009/6/16 Jeff S (Google) <j...@google.com>: > > The datastore does not allow key_names which begin with a digit in > order to avoid confusion with an ID, which is numerical. If you want > to use numeric key names, you could add a one letter prefix :-) > > Happy coding, > > Jeff > > On Jun 16, 1:17 am, cryb <cbuti...@gmail.com> wrote: >> Hi Jeff. >> Thanks for your reply.. I really hope that in the near future >> appengine will support setting key ids for entities. >> You mentioned that I can use hooks in order to achieve my goal.. >> However I was more interested in a solution based on appengine java >> sdk, and not on python hooks. Does appengine java sdk provide hooks or >> some other similar mechanism? >> It seems that for the moment I'll stick to generating key names. >> One more question: I've tried to generate some entities with key names >> on my local devappserver and I got a strange exception stating that I >> can't create key names that start with a digit (?!?)... this holds on >> google appengine production servers too or it's just a "bug" of >> devappserver? >> >> Thanks >> >> On Jun 16, 2:45 am, "Jeff S (Google)" <j...@google.com> wrote: >> >> > Hi cryb, >> >> > As you noted, we do not currently allow the ID for a key to be set, as we >> > ensure that the ID is unique for each existing entity. I recommend using a >> > key name instead of an ID, as Antoniov suggeted, if possible. >> >> > It is technically possible to modify the key of an entity as it is being >> > converted to a protocol buffer message before it is sent to the datastore. >> > You could do this using hooks in the API proxy as described in this >> > article:http://code.google.com/appengine/articles/hooks.htmlAlsoit is >> > possible to >> > construct the key for the desired object if you know the ID in advance. >> >> > class X(db.Model): >> > pass >> >> > # If you've already created the entity so you have the ID. >> > x_id = X().put().id() >> >> > # Instead of getting by ID, you can create the key manually. >> > k = db.Key.from_path('X', x_id) >> >> > Now you have the desired key without having fetched the object, but the >> > part >> > which the model class does not allow is setting the key yourself. So you >> > could modify the protocol buffer message before it is written to the >> > datastore, but I don't recommend it. >> >> > The decision to allow setting key_names but not IDs is something we may >> > revisit. >> >> > Happy coding, >> >> > Jeff >> >> > 2009/6/12 cryb <cbuti...@gmail.com> >> >> > > Hi.. that is to build key names... What I asked was why I can't build >> > > a key ID.. >> >> > > On Jun 12, 5:35 am, Antoniov <nio....@gmail.com> wrote: >> > > > Use the code: >> > > > s = Story(key_name="xzy123") >> > > > Then you create an entity with the key name "xzy123". >> >> > > > Check this: >> > >http://code.google.com/intl/en-US/appengine/docs/python/datastore/key... >> >> > > > On 6月12日, 上午1时28分, cryb <cbuti...@gmail.com> wrote: >> >> > > > > Does anyone know why it is possible to build a key name but NOT a key >> > > > > id? I know key IDs are used as autoincrements, but why can't I just >> > > > > override this mechanism and build my own key id? >> > > > > Suppose I want to overwrite an existent entry in my table that has a >> > > > > key id I know, and also I want to keep that key id after update... >> > > > > because I can't just build a key id, I am forced to fetch that >> > > > > entity, >> > > > > modify it and write it back, instead of just write the updated entity >> > > > > with the key id I already know - so an additional read to the >> > > > > datastore. >> > > > > Is there an obscure reason for that? (both key names and key ids are >> > > > > prefixed with appid/kind as far as I know so there is no chance of >> > > > > collision with other apps/kinds) > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google App Engine" group. To post to this group, send email to google-appengine@googlegroups.com To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en -~----------~----~----~----~------~----~------~--~---