Google App Engine - 查询与过滤器说明

Google App Engine - query vs. filter clarification

我的模特:

 class User(ndb.Model):
    name = ndb.StringProperty()

以下两个查询在efficiency/cost/speed方面有什么区别吗?

 u = User.query(User.name==name).get()

 u = User.query().filter(User.name==name).get()

我应该用其中一个代替另一个吗?我认为第二个更糟糕,因为它首先获取整个 User class 查询集然后应用过滤器?

两者在功能上没有区别,所以你可以选择你最喜欢的。在 google documentation 上,他们展示了这两个示例:

query = Account.query(Account.userid >= 40, Account.userid < 50)

query1 = Account.query()  # Retrieve all Account entitites
query2 = query1.filter(Account.userid >= 40)  # Filter on userid >= 40
query3 = query2.filter(Account.userid < 50)  # Filter on userid < 50 too

和状态:

query3 is equivalent to the query variable from the previous example.