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 BadFilterError:筛选器无效:每个查询只能有一个属性具有不等筛选器(<;=,>;=,<;,>;)_Python_Google App Engine_Google Cloud Datastore - Fatal编程技术网

Python BadFilterError:筛选器无效:每个查询只能有一个属性具有不等筛选器(<;=,>;=,<;,>;)

Python BadFilterError:筛选器无效:每个查询只能有一个属性具有不等筛选器(<;=,>;=,<;,>;),python,google-app-engine,google-cloud-datastore,Python,Google App Engine,Google Cloud Datastore,我试图在两个不同的属性上应用过滤器,但它不允许我这样做。那么解决方案是什么,代码是snipt: if searchParentX : que.filter("parentX >=", searchParentX).filter("parentX <=", unicode(searchParentX) + u"\ufffd") que.order('parentX') if searchParentY : que.filter("parentY >

我试图在两个不同的属性上应用过滤器,但它不允许我这样做。那么解决方案是什么,代码是snipt:

if searchParentX :
    que.filter("parentX >=", searchParentX).filter("parentX <=", unicode(searchParentX) + u"\ufffd") 
    que.order('parentX')   

if searchParentY :
    que.filter("parentY >=", searchParentY).filter("parentY <=", unicode(searchParentY) + u"\ufffd") 
如果searchParentX:

que.filter(“parentX>=”,searchParentX).filter(“parentX=”,searchParentY).filter(“parentY不平等过滤器”最多只限于一个属性,我认为这一限制是因为bigtable中的数据以词法排序的形式存储,因此一次只能执行一个搜索


解决方案是进行内存过滤:

  • 您可以运行两个查询(每个查询对一个属性进行过滤)并对结果进行交集(根据数据的大小,您可能需要限制一个查询的结果,但不限制另一个查询的结果,以便将其放入内存中)
  • 运行一个查询并过滤掉内存中的另一个属性(在这种情况下,如果您知道哪个属性将返回更过滤的列表,这将是有益的)
  • 或者,如果数据的结构可以将数据分成多个集合,则可以对该集合执行相等筛选,并在内存中完成筛选。例如,如果正在搜索字符串,但知道字符串的长度是固定的(例如6个字符),则可以创建“查找”字段中包含行乞的3/4个字符。然后,当您需要搜索此字段时,可以通过匹配前几个字符来完成搜索,并在内存中完成搜索。另一个示例:在搜索整数范围时,如果您可以定义范围的通用分组(例如,一年几十个字符或价格范围),则可以定义“范围”要在其上执行相等搜索并在内存中继续筛选的字段