ndb查询同时选择__key__和属性

时间:2014-05-21 05:14:07

标签: google-app-engine app-engine-ndb gql gqlquery

是否可以同时选择以及ndb查询中的属性?

现在我有:

one = ndb.gql('SELECT __key__ FROM Subject ORDER BY order ASC')
two = ndb.gql('SELECT name,order FROM Subject ORDER BY order ASC')

是否可能有类似的内容:

oneandtwo = ndb.gql('SELECT __key__,name,order FROM Subject ORDER BY order ASC')
#This didn't work

如果没有,是否可以组合一个和两个查询,因为它们的大小相同?

oneandtwo = one + two
#This didn't work either

提前致谢!

1 个答案:

答案 0 :(得分:2)

您是否阅读过有关投影查询的文档并尝试过? https://cloud.google.com/appengine/docs/standard/python/ndb/projectionqueries

您需要的一切都在文档中。

例如,如果对“名称”执行投影查询,则会返回包含键和单个属性“名称”的对象,如果使用了名称和顺序,则可以获得这两个属性。此外,对象具有密钥。但是,如果尚未构建匹配的索引,则投影查询将不起作用。

 > x = ndb.gql("SELECT name from Product").fetch(5)
 > x
[<Product key_name="Key('Product', 'Pre-Filter-Sponge-15mm-BSP', 'Product', '002811-0001')"/>, <Product key_name="Key('Product', 'Pre-Filter-Sponge-15mm-BSP', 'Product', '002811-0002')"/>, <Product key_name="Key('Product', 'Pre-Filter-Sponge-25mm-BSP', 'Product', '002812-0002')"/>, <Product key_name="Key('Product', 'Pre-Filter-Sponge-25mm-BSP', 'Product', '002812-0003')"/>, <Product key_name="Key('Product', 'Seagull-Fibreglass-Spill', 'Product', '004321-0001')"/>]
 >  x[0]
<Product key_name="Key('Product', 'Pre-Filter-Sponge-15mm-BSP', 'Product', '002811-0001')"/>
 >  x[0].name
u'002811-0001'
 >  x[0].price
Traceback (most recent call last):