App Engine 数据存储可以查询返回完整实体还是仅返回实体键?
我在阅读Google App Engine的文档时,发现这一段有点难懂。
App Engine的数据存储可以从查询中返回整个实体,或者只返回实体的键。
这是什么意思呢?这里提到的有filter(property_operator, value)
和fetch(limit, offset=0)
。
而且我相信django-nonrel在App Engine上支持values()
。那这又是什么意思呢?
2 个回答
1
这段话的意思是,如果你只需要对象的键(也就是用来唯一识别这个对象的标识符),而不需要它的所有属性,那么你可以省去获取这些属性的额外开销。你可以通过使用keys_only这个参数来实现。
举个例子,
SomeModel.all(keys_only=True).fetch(10)
这段代码会返回SomeModel实体的键对象,而不是包含所有属性的完整对象。
这样可以帮助你更好地理解键和完整对象之间的区别:
http://code.google.com/appengine/docs/python/datastore/entities.html
1
你可以进行一个标准的查询,像这样:
results = MyModel.all().filter('foo =', 'bar').fetch(20)
这个查询会返回一个实体的列表(也就是 db.Model 的实例)。或者,你可以进行一个只获取键的查询,像这样:
results = MyModel.all(keys_only=True).filter('foo =', 'bar').fetch(20)
这个查询只会返回匹配实体的键(也就是 db.Key 的实例),而且执行速度比第一个查询要快。