有没有办法替代:
def get_objects(attr1,attr2,..):
objects = Entities.all()
if attr1 != None:
objects.filter('attr1',attr1)
if attr2 != None:
objects.filter('attr2',attr2)
....
return objects
使用单个查询:
Entities.all().filter('attr1',attr1).filter('attr2',attr2)
通过使用某种“匹配所有”符号(可能是正则表达式查询)? 第一个查询的问题在于(除了丑陋之外)它为所有可能的过滤器序列创建索引。
最佳答案
数据存储区不支持正则表达式查询或 OR 查询。
但是,如果您仅使用相等过滤器,则不应自动创建索引;只要过滤器的数量保持较低,就可以使用合并连接策略来提供这些类型的查询(如果您尝试添加太多过滤器,您将收到一条错误,表明现有索引无法用于执行有效地查询;但是,在这种情况下尝试添加所需的索引通常会导致索引爆炸问题。)
第一种方法中的丑陋问题可能可以通过将列表而不是单个变量传递给函数来解决,然后使用列表理解而不是一堆 if 语句。
关于python - 匹配数据存储查询中的所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3226775/