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)

2 番目にすべてのレコードを更新します。

必要な 3 番目のスイッチ ターゲット モデル:

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 に答える