数据存储查看器中带有数字标识的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更改为长