数据存储查看器中带有数字标识的GQL查询

我想要构buildGQL查询来使用其数字ID来获取对象。 我在Apppipe理控制台的Datastore查看器中这样做,所以我不能使用Model.get_by_id(numeric_id)。 就像是

SELECT * FROM Model WHERE id = <numeric_id> 

也不起作用。

尝试这个:

 SELECT * FROM Model where __key__ = KEY('Model', <numeric_id>) 

不幸的是,似乎没有办法写一个相当于查询的

 SELECT * FROM Model WHERE id = <numeric_id> 

这将select具有给定ID的所有Model实体。 如果你对一些相当的东西还可以

 SELECT * FROM Model WHERE id = <numeric_id> AND parent IS NULL 

你可以使用类似的东西

 SELECT * FROM Model where __key__ = KEY('Model', <numeric_id>) 

如果您的实体确实拥有父项,则需要将其指定为该项的一部分,例如

 SELECT * FROM Model where __key__ = KEY('ParentModel', <parent_name_or_id>, 'Model', <numeric_id>) 

如果父母本身有父母,则还需要指定父母。 (祖父母离开父母,等等。)

当然,如果您不限于GQL(就像使用Python,Go或Java一样),您可以查询关键字,解码它们并按ID筛选,然后获取相应的实体。 但是,当然这在数据存储查看器中不起作用,因为您只能使用GQL。

另一种方法是,首先获取使用id的实体的关键字

 key = db.Key.from_path('Model', int(id)) 

然后通过获取对象

 obj = db.get(key) 

好处是,你不必做任何string格式。

参考:本课程中的问题集3, https://classroom.udacity.com/courses/cs253/

在我的情况下,我不得不将string的types更改为长