Just star'd it -thx.

2009/6/24 Jeff S (Google) <j...@google.com>:
> 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.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
-~----------~----~----~----~------~----~------~--~---

Reply via email to