0

我有这样的数据存储在数据库中:

class DeleteMe(db.model):
        value1 = IntegerProperty(required = True, indexed = False)

并希望将其迁移到这样的架构:

class DeleteMe(db.model):
        value1 = IntegerProperty(required = True, indexed = False)
        value2 = IntegerProperty(required = True, indexed = False)

什么是最简单的迁移方法?

我发现我可以以这种方式做到这一点,但速度很慢并且会产生错误。

首先创建不需要的新表:

class DeleteMe(db.model):
        value1 = IntegerProperty(required = True, indexed = False)
        value2 = IntegerProperty(required = False, indexed = False)

第二次更新所有记录。

第三个切换目标模型,需要:

class DeleteMe(db.model):
        value1 = IntegerProperty(required = True, indexed = False)
        value2 = IntegerProperty(required = True, indexed = False)

它很慢,所以我认为我没有正确执行或应用程序引擎不允许它?请帮助找到好方法。

4

1 回答 1

2

你不必做所有这些。value2您只需添加新的必填字段并使用默认值更新所有没有 的记录。对于没有value2初始化的实体,您的应用程序将毫无问题地工作。

我建议您添加一个默认值,如果可能的话,这样如果您在不触及value2应用程序的情况下更新实体中的其他值,应用程序将不会崩溃。

另外不要忘记,如果您不更新旧实体(通过显式编辑和存储值),即使您在查询value2旧实体时设置了默认值也不会包含在结果中.

于 2013-07-29T15:01:54.193 回答