在GQL reference名单__key__,鼓励使用IN
关键字与值的列表,并从手构建一个关键的GQL查询GQL查询与键
SELECT * FROM MyModel WHERE __key__ = KEY('MyModel', 'my_model_key')
会成功。然而,使用的代码,你会期望工作:
SELECT * FROM MyModel WHERE __key__ IN (KEY('MyModel', 'my_model_key1'),
KEY('MyModel', 'my_model_key2'))
在数据存储浏览器
,还有的投诉“无效的GQL查询字符串。”
格式化这种查询的正确方法是什么?
更新:这是不可能与当前的SDK。正如我在我的评论中指出的那样,当使用列表时,只有引用(例如:1
或:email
)或int,float,string,boolean或null文字是可接受的列表条目。
第二次更新:我修复了这个错误,现在可以执行这样的查询。您可以在Google Code Hosting diff中找到Fix。
PS我知道有更有效的方式来在Python中完成此操作(无需构建GQL查询)并使用remote_api,但每次调用remote_api都会违反配额。在配额不是(必然)免费的环境中,快速和肮脏的查询非常有用。
您是否真的认为在控制台中手动获取的实体数量将增加大量消耗的配额,如果您是通过remote_api实现的? –
不需要。我只是想知道如何正确构建查询。我的文章中的第二个片段看起来不会是“无效的GQL查询字符串”。 “WHERE __key__ IN”是否是无效的GQL? – bossylobster
虽然我仍然困惑你为什么要这样做。这是获取实体的特别低效的方式。 –