see also http://groups.google.com/group/google-appengine/browse_thread/thread/3f8cfeaf7dc2eb72/d5d599180fe47e02?lnk=gst&q=ryan+allocate#d5d599180fe47e02
On Jun 24, 11:33 am, "Jeff S (Google)" <j...@google.com> wrote: > Hi Jeff, > > This is an idea that we're aware of as well. If you could reserve the next > ID in advance, then you could actually do this in one put since multiple > entities could be sent in one batch :-) The workaround available now is to > use the key_name, but the difficulty becomes ensuring that the key_name is > unique. Here is a feature request which I'm aware of which is along these > lines (though the approach differs slightly): > > http://code.google.com/p/googleappengine/issues/detail?id=1003 > > Thank you, > > Jeff > > 2009/6/24 Jeff Enderwick <jeff.enderw...@gmail.com> > > > > > > > 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.htmlAlsoitis > > 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)- Hide quoted text - > > - Show quoted text - --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---