Data integrity - I want this to be atomic.. I do not want either A
or the list of B's saved if the other fails to save.
On Mar 19, 3:16 pm, djidjadji djidja...@gmail.com wrote:
Why do you need a transaction for this operation?
To create B objects that are children of some A use
a=A()
a.put() # create the parent object
bObjs = [B(parent=a, somestring=s) for s in somelist]
db.put(bObjs)
2009/3/19 Anonymous Coderrr greedw...@gmail.com:
Hi,
The documentation for entity-groups and transactions say that entities
must all be in the same eneity group for transaction operations to
work. But it does not specifically say how to put entities in the
same entity group, other than some mention of setting the same parent,
which it also does not say how to do.
Maybe someone could show me specifically how to do this?
Let's say I have:
class A(db.Model):
bList = db.ListProperty(db.Key)
class B(db.Model):
someString = db.StringProperty()
def tran(self, a, bList):
bKeys = put_each_list_item_return_keys_as_list(bList) # this
just calls put() on each item, returns keys
a.bList = bKeys
a.put()
# the work
bLIst = createListofBs()
a = A()
db.run_in_transaction(tran, a, bList)
If I run this, I get this error while the items in the bList are being
put:
BadRequestError: Cannot operate on different entity groups in a
transaction: (kind=u'B', id=65L) and (kind=u'B', id=None).
How do I get everything into one entity group so this transaction will
commit?
Thanks.- 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
-~--~~~~--~~--~--~---