在Google应用引擎上,如何实现数据库事务?

wil*_*lem 5 google-app-engine transactions google-cloud-datastore

我知道在app引擎上处理数据库事务性的方法是给不同的实体Parent(实体组)并使用db.run_in_transaction.

然而,假设我能够给两个实体相同的父.如何确保在事务中进行数据库更新?

有技术解决方案吗?如果没有,是否有我可以应用的模式?

注意:我使用的是Python.

jbo*_*chi 5

只要实体属于同一组,这不是问题.来自文档:

事务中的所有数据存储区操作都必须对同一实体组中的实体进行操作.这包括由祖先查询实体,按键检索实体,更新实体和删除实体.请注意,每个根实体都属于一个单独的实体组,因此单个事务不能在多个根实体上创建或操作.有关实体组的说明,请参阅键和实体组.

关于App Engine中的事务隔离还有一篇很好的文章.

编辑:如果您需要在同一事务中更新具有不同父项的实体,则需要实现一种方法来序列化您自己所做的更改,并在引发异常时手动回滚.