短い答えは:それはそれを処理しません。エンティティの名前を変更することはできません。プロパティを変更することはできますが、手動でデータを更新する必要があります。
モデル定義は、データストアに格納されているエンティティをどのように解釈するかというアプリケーションの「ビュー」に過ぎません。私のような定義を持っていた場合:すべての私の既存のデータはとどまる
class MyEntity(db.Model):
description = db.TextProperty()
:
class MyEntity(db.Model):
text = db.TextProperty()
をそして、私のentiesのtext
プロパティを埋めるしばらくの間、自分のアプリケーションを実行し、その後に列を名前を変更それは(人口text
プロパティを持つデータストアのエンティティがたくさんいたとおりに。私は私のモデルインスタンスにエンティティをロードしようとした場合にのみ、私は唯一の空なしdescription
セットを持つエンティティ(、およびtext
データにアクセスする方法はありませんとしてそれらを見るでしょう現在存在しています)。エンティティを保存して(パッティングする)データストアが古いデータを上書きすると、データが失われます。
このようにスキーマを変更した場合や、フィールドタイプを変更した可能性が高い場合。変更を処理するためにデータを前処理するのはあなた次第です。モデルレイヤーは、モデル定義に準拠しなくなったエンティティを読み込んで読み込むと、エラーが発生します。で
- のremote_api/remote_api_shell.py
- mapreduceライブラリ(特に "マッパー" の部分)
:あなたのデータを更新し、選択した武器があるの、このマニュアル作業を支援するために
remote_api [1]の設定では、ライブデータに対して対話的なPythonセッションを開き、プロダクションサーバー上で直接実行されているかのようにローカル(ほとんど)のスクリプトを実行できます。私はこれが小さな一回限りの仕事のためにデータを修正/クリーンアップする最も簡単な方法だと思っています。あなたがはるかに大きいタスクを持っている場合は、マッパーAPIは、[2]を採用することができ
は、エンティティの何百万人を変えると言うと、可能な限り並行して、このの多くを行うの利点を活用したいと思います。
良い答えが、MapReduceのの言及は偉大な答えになるだろう。 –
クリスおかげさま! @Nick、Mapreduceに言及してくれてありがとう。 – stringo0