Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何测试Appengine中引用属性的有效性?_Python_Google App Engine_Google Cloud Datastore - Fatal编程技术网

Python 如何测试Appengine中引用属性的有效性?

Python 如何测试Appengine中引用属性的有效性?,python,google-app-engine,google-cloud-datastore,Python,Google App Engine,Google Cloud Datastore,我目前正在测试我编写的一个小应用程序。我没有足够小心地确保数据存储中的数据是一致的,现在我有一个问题,我有一些记录引用的对象不再存在。更具体地说,我有一些对象,它们的ReferenceProperty已经被赋值;引用的对象已删除,但引用仍保留 我想在代码中添加一些检查,以确保引用的对象存在并相应地执行操作。(当然,我还需要清理我的数据) 一种方法是尝试获得它;但是,这可能会检索整个对象—我希望采用一种方法,只测试对象的存在性,理想情况下,只会导致数据存储上的键操作成本,而不是完整的实体读取成本

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

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

一种方法是尝试获得它;但是,这可能会检索整个对象—我希望采用一种方法,只测试对象的存在性,理想情况下,只会导致数据存储上的键操作成本,而不是完整的实体读取成本


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

这将测试密钥是否存在,而不返回实体:

db.Query(keys_only=True)。过滤器(“key_u=”,test_key)。计数(1)==1


我不确定它在计算上是否比获取实体便宜。

谢谢-它看起来有点重。我希望能有轻一点的东西;我会把问题留长一点,以防其他人可以提出一个更整洁的变体。Drew的解决方案实际上很简单。仅查询密钥比获取实体更快。谢谢Dave。当然,这毕竟是问题的关键所在。我的意思是沉重,因为它似乎有相当多的运动部件,用于相当基本/基本的操作。只需在其中输入一个“def keyExists(test_key):”和一个“return”,就可以了。…。@DaveW.Smith我不确定是这样的-这当然取决于实体的复杂性。不过,我很想看到基准测试以这样或那样的方式证明这一点。