如何在Appengine中测试ReferenceProperty的有效性?

时间:2011-10-03 15:02:38

标签: python google-app-engine google-cloud-datastore

我目前正在测试我编写的一个小应用程序。我没有足够小心地确保我的数据存储区中的数据是一致的,现在我有一个问题,我有一些记录引用不再存在的对象。更具体地说,我有一些具有ReferenceProperty的对象已被赋值;所引用的对象已被删除,但引用仍然存在。

我想在代码中添加一些检查,以确保引用的对象存在并相应地执行。 (当然,我还需要清理我的数据)。

一种方法是尝试获取()它;然而,这可能应该检索整个对象 - 我想要一种只测试对象存在的方法,理想情况下,只是导致数据存储区上的关键操作成本,而不是完整的实体读取。

所以,我的问题如下:是否有一个简单的机制来测试给定的ReferenceProperty是否有效,只涉及密钥访问操作(而不是完整的实体获取操作)?

1 个答案:

答案 0 :(得分:3)

这将测试密钥的存在而不返回实体:

db.Query(keys_only=True).filter('__key__ =', test_key).count(1) == 1

我不确定它在获取实体方面的计算成本是否便宜。