数据存储区查看器中具有数字ID的GQL查询

Paw*_*ski 35 google-app-engine gql

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

SELECT * FROM Model WHERE id = <numeric_id>
Run Code Online (Sandbox Code Playgroud)

也行不通.

Sax*_*uce 76

试试这个:

SELECT * FROM Model where __key__ = KEY('Model', <numeric_id>)
Run Code Online (Sandbox Code Playgroud)

  • GQL!你怎能不爱它./讽刺 (4认同)

aij*_*aij 5

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

SELECT * FROM Model WHERE id = <numeric_id>
Run Code Online (Sandbox Code Playgroud)

这将选择具有给定id的所有Model实体.如果你对某些东西感到满意的话

SELECT * FROM Model WHERE id = <numeric_id> AND parent IS NULL
Run Code Online (Sandbox Code Playgroud)

你可以用类似的东西

SELECT * FROM Model where __key__ = KEY('Model', <numeric_id>)
Run Code Online (Sandbox Code Playgroud)

但是,如果您的实体确实有父级,则需要将其指定为密钥的一部分,例如

SELECT * FROM Model where __key__ = KEY('ParentModel', <parent_name_or_id>, 'Model', <numeric_id>)
Run Code Online (Sandbox Code Playgroud)

如果父级本身有父级,则还需要指定父级.(祖父母离开父母,依此类推.)

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