Python 从AppEngine数据存储中删除前获取部分祖先

Python 从AppEngine数据存储中删除前获取部分祖先,python,google-app-engine,model,datastore,Python,Google App Engine,Model,Datastore,我想从事务中的AppEngine数据存储中删除一组对象: def F(): items_to_delete = [] for item in db.Query().ancestor(...): if item.aaa ... item.bbb: items_to_delete.append(item) db.delete(items_to_delete) db.run_in_transaction(F) 是否可以只提取项目的几个字段(aaa和bbb)?这样的获取

我想从事务中的AppEngine数据存储中删除一组对象:

def F():
  items_to_delete = []
  for item in db.Query().ancestor(...):
    if item.aaa ... item.bbb:
      items_to_delete.append(item)
  db.delete(items_to_delete)
db.run_in_transaction(F)

是否可以只提取项目的几个字段(
aaa
bbb
)?这样的获取会对性能产生积极影响吗?

不可能只获取几个字段;i、 e.您将始终获取整个实体及其所有字段(或仅获取实体键)。从:

GQL语法可以总结如下:
选择[*| uuu键uuu]
[来自]]
[其中[和……]]
[由[ASC|DESC][,[ASC|DESC]…]订购]
[限制[,]
[抵销]

GQL查询返回零个或多个请求类型的实体或键。每一个GQL查询总是以
SELECT*
SELECT\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
开始。(GQL查询无法执行类似SQL的“连接”查询。)提示:
SELECT\uuuuuu key\uuuu
查询比
SELECT*
查询速度更快,CPU成本更低


退房,Guido自己写的(俯身说“我不配”x3:)。他在查询和获取几个带偏移量的字段时使用AND或(这回答了您的问题)。但是仍然是实验性的,所以请小心使用,直到它超出预览范围。

那么,如何在
db.Query()祖先(…)
Query中仅获取
\uuuuuuu键(
)呢?@pts Try
db.Query(keys\uonly=True)。祖先(…)
The GQL syntax can be summarized as follows:   
    SELECT [* | __key__]
        [FROM <kind>]]
        [WHERE <condition> [AND <condition> ...]]
        [ORDER BY <property> [ASC | DESC] [, <property> [ASC | DESC] ...]]
        [LIMIT [<offset>,]<count>]
        [OFFSET <offset>]