Python 谷歌数据存储ndb.和vs.和
我发现,使用ndb数据存储API,我可以使用以下内容执行涉及多个属性的查询Python 谷歌数据存储ndb.和vs.和,python,google-app-engine,google-cloud-datastore,app-engine-ndb,Python,Google App Engine,Google Cloud Datastore,App Engine Ndb,我发现,使用ndb数据存储API,我可以使用以下内容执行涉及多个属性的查询 Entity.query(Entity.p1 == 1 and Entity.p2 == 2) 或 它们给出了相同的结果,但是第二个需要在属性p1和p2上添加一个额外的索引来执行查询。类似地,如果在查询中使用.filter而不是ndb.AND,则也不需要索引。这些查询数据存储的方法有什么区别?小心;第一个版本('and')的计算结果仅为筛选器的第二部分。试试这个: clause = (Entity.p1 == 1 an
Entity.query(Entity.p1 == 1 and Entity.p2 == 2)
或
它们给出了相同的结果,但是第二个需要在属性p1和p2上添加一个额外的索引来执行查询。类似地,如果在查询中使用.filter而不是ndb.AND,则也不需要索引。这些查询数据存储的方法有什么区别?小心;第一个版本('and')的计算结果仅为筛选器的第二部分。试试这个:
clause = (Entity.p1 == 1 and Entity.p2 == 2)
print clause
=>
在预期的过滤器中执行以下操作:
clause = (Entity.p1 == 1, Entity.p2 == 2)
=>
这与使用ndb的第二个子句类似,并导致ie:
AND(FilterNode('p1', '=', 1), FilterNode('p2', '=', 2))
(在本例中,查询结果相同)
由于单个属性查询不需要额外的索引,您将不会看到为第一个查询版本生成的索引(使用“and”)。小心;第一个版本('and')的计算结果仅为筛选器的第二部分。试试这个:
clause = (Entity.p1 == 1 and Entity.p2 == 2)
print clause
=>
在预期的过滤器中执行以下操作:
clause = (Entity.p1 == 1, Entity.p2 == 2)
=>
这与使用ndb的第二个子句类似,并导致ie:
AND(FilterNode('p1', '=', 1), FilterNode('p2', '=', 2))
(在本例中,查询结果相同)
由于单个属性查询不需要额外的索引,因此您将不会看到为第一个查询版本生成的索引(使用“and”)