I want to find that particular entity, change it and save it back. When one
request is doing this, I don't want another request pick up the same entity
and modify it again. In short, I want the 'seek-change-save' to be
serialized, as one reason the GAE transaction is designed for. Finding out
the key of the entity first out of a transaction and then using the key
inside the transaction defeats the purpose.

Will

On Sat, Nov 14, 2009 at 1:24 PM, 风笑雪 <[email protected]> wrote:

> Why you need a transaction to update just one entity? Just save it and
> you may get an exception when update failed.
>
> BTW, DateTimeProperty has an parameter auto_now, you can use it to
> automatic update its time by datastore.
>
> And if you really want a transaction, you need fetch it before start
> the transaction:
>
> item = C1.gql("WHERE p1 = :a AND p2 < :b ORDER BY p2", a = None, b =
> today).get()
> if item:
>  key = item.key()
>  def update_time(key)
>    item = C1.get(key)
>    if item:
>       item.p1 = now
>      item.put()
>   db.run_in_transaction(update_time, key)
>
> 2009/11/14 Will <[email protected]>:
> > Yes, I've read the document. I'm looking for some examples.
> >
> > As I said, I have a class, C1, whose entities have no ancestors. I want
> to
> > query a particular entity from it, modify, and put it back, for example,
> >
> > item = C1.gql("WHERE p1 = :a AND p2 < :b ORDER BY p2", a = None, b =
> > today).fetch(1)
> > item.p1 = now
> > item.put()
> >
> > Both p1 and p2 are datetime. How can I build this into a transaction? Is
> > there a way I can give the entities a 'place holder' ancestor so I can
> later
> > use an 'ancestor filter' in the query to satisfy the requirement?
> >
> > Thanks,
> >
> > Will
> >
> >
> > On Fri, Nov 13, 2009 at 9:44 PM, Stephen <[email protected]> wrote:
> >>
> >> On Nov 13, 2:27 am, Will <[email protected]> wrote:
> >> >
> >> > Can you give me some examples of 'ancestor queries'? If possible, I'd
> >> > like
> >> > to change the existing ones into 'ancestor queries' and fit the whole
> >> > into a
> >> > transaction, because that is exactly what a transaction designed for.
> >>
> >>
> >>
> >>
> http://code.google.com/appengine/docs/python/datastore/transactions.html#What_Can_Be_Done_In_a_Transaction
> >>
> >> --
> >>
> >> You received this message because you are subscribed to the Google
> Groups
> >> "Google App Engine" group.
> >> To post to this group, send email to [email protected].
> >> To unsubscribe from this group, send email to
> >> [email protected]<google-appengine%[email protected]>
> .
> >> For more options, visit this group at
> >> http://groups.google.com/group/google-appengine?hl=.
> >>
> >>
> >
> > --
> >
> > You received this message because you are subscribed to the Google Groups
> > "Google App Engine" group.
> > To post to this group, send email to [email protected].
> > To unsubscribe from this group, send email to
> > [email protected]<google-appengine%[email protected]>
> .
> > For more options, visit this group at
> > http://groups.google.com/group/google-appengine?hl=.
> >
>
> --
>
> You received this message because you are subscribed to the Google Groups
> "Google App Engine" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<google-appengine%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/google-appengine?hl=.
>
>
>

--

You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=.


Reply via email to