在GAE应用程序之间传输数据时是否写入已禁用的属性索引?

时间:2011-12-05 18:30:37

标签: google-app-engine

我有一个具有15个属性的模型,并为每个属性设置了indexed = False。当我编写此模型的实体时,它不会写入这些属性的属性索引,但是当我将该模型从一个应用程序转移到另一个应用程序时,它似乎在新应用程序中编写这些属性索引。

我的测试是我在我的原始MS应用程序中有3000个实体,我想转移到我的新HR应用程序。在MS应用程序中,我没有索引(在index.yaml中定义),并且所有属性索引都已关闭。当我将这些实体传输到新应用程序(使用数据存储区管理中的复制工具)时,它会在完成复制所有实体之前使用免费配额中可用的所有50,000次写入。

我怀疑由于Python代码(我的模型类)中的属性索引被禁用,因此数据存储管理工具可能没有此信息,因此它假定它需要在新应用程序中编写所有属性索引(或者remote_api假设或者其他任何实际的写作。)

如果我说得对,那么有没有办法在没有写入属性索引的情况下转移实体?我可以编写自己的导出/导入代码,使用我的Python模型类,但我希望有一些内置的方法来做到这一点。

1 个答案:

答案 0 :(得分:2)

虽然Python代码定义了属性是否可编写索引,但是当实体在应用程序之间移动时,会传输有关特定属性是否已编制索引的数据,因此该属性应在新应用程序上保持未编入索引。但是,您可以通过在新应用程序的管理控制台中为相关属性执行查询来测试此项 - 如果未编入索引,则不会返回任何结果。

如果在新(HR)应用程序中定义了复合索引,则在复制实体时,将为任何索引属性写入这些索引。您可以通过删除这些索引来保存一些配额,直到复制数据,然后重新创建它们。