2013-11-15 58 views
4

我在Google App Engine上使用NDB和Python。更新具有相同值的多个实体的属性的正确方法是什么? NDB相当于:Google App Engine - NDB - 在多个记录上设置属性值

UPDATE notifications SET read = true WHERE user_id = 123

用例是我有这些扇出通知。并且特定用户想要将他们的所有通知设置为已读(可能为100秒)。我知道我可以使用get_async和put_async来获取每个未读通知并将其设置为已读,但是我担心通过获取潜在的数百个序列化/反序列化来创建延迟。

任何建议是非常appericated。

回答

2

您可以使用Query的map()方法为每个实体调用一个函数。为了获得最佳性能,请不要忘记_async

但GAE最有用的服务之一就是任务队列,特别是在这种情况下。如果您合并Query Cursorsdeferred library,则可以轻松处理任意数量的实体。

+0

任务队列是一个很好的建议,我期待我可能需要,如果我真的没有需要以更新自己的财产来获取所有实体使用它们。 虽然我想知道地图。我没有真正转化(或映射)任何数据,IE我不关心结果。我只需要把数据。仍然认为制图符合法案? –

+0

'图()'将导致少量工作得很好,否则你要使用的延迟库的例子。不要忘记批量拼装。 (在每个实体上调用'ndb.put_multi()'和'model.put()') – Josh

相关问题