我目前正在测试我编写的一个小应用程序。我在确保数据存储中的数据一致方面不够小心,现在我遇到一个问题,即我有一些引用不再存在的对象的记录。更具体地说,我有一些具有已分配值的 ReferenceProperty 的对象;引用的对象已被删除,但引用仍然存在。
我想在我的代码中添加一些检查,以确保引用的对象存在并相应地执行操作。 (当然,我还需要清理我的数据)。
一种方法是尝试 get() 它;但是,这可能应该检索整个对象 - 我想要一种仅测试对象是否存在的方法,理想情况下,只会导致数据存储上关键操作的成本,而不是完整的实体读取。
所以,我的问题如下:是否有一个简单的机制来测试给定的 ReferenceProperty 是否有效,仅涉及关键访问操作(而不是完整的实体获取操作)?
最佳答案
这将测试 key 是否存在而不返回实体:
db.Query(keys_only=True).filter('__key__ =', test_key).count(1) == 1
我不确定它在计算上是否比获取实体更便宜。
关于python - 如何测试 Appengine 中 ReferenceProperty 的有效性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7636806/