在KEY列表中使用__key__进行GQL查询

bos*_*ter 5 google-app-engine gql

GQL参考中,鼓励将IN关键字与值列表一起使用,并从GQL查询中手动构造Key

SELECT * FROM MyModel WHERE __key__ = KEY('MyModel', 'my_model_key')
Run Code Online (Sandbox Code Playgroud)

将会成功.但是,使用您期望的代码:

SELECT * FROM MyModel WHERE __key__ IN (KEY('MyModel', 'my_model_key1'),
                                        KEY('MyModel', 'my_model_key2'))
Run Code Online (Sandbox Code Playgroud)

在数据存储查看器中,存在"无效的GQL查询字符串"的投诉.

格式化此类查询的正确方法是什么?

更新:这不适用于当前的SDK.正如我在评论中指出的,当使用列表时,只有引用(例如:1:email)或int,float,string,boolean或null literal是可接受的列表条目.

第二个更新:我修复了错误,现在可以执行此类查询.可以在Google Code Hosting diff中找到修复程序 .

PS我知道在Python中有更有效的方法(没有构建GQL查询)和使用remote_api,但每次调用remote_api都会计入配额.在配额不是(必然)免费的环境中,快速和脏的查询非常有用.

bos*_*ter 1

实施修复后,原始帖子中的代码片段就足够了:

SELECT * FROM MyModel WHERE __key__ IN (KEY('MyModel', 'my_model_key1'),
                                        KEY('MyModel', 'my_model_key2'))
Run Code Online (Sandbox Code Playgroud)

PS我意识到我对原始帖子的评论可能不够清楚,无法作为对未来观众的答案。