1

既存のスキーマがあります:

class Example (db.Model) :
 row_num = db.IntegerProperty(required=True)
 updated = db.IntegerProperty()
 ...
 ...

これを次のように更新しました:

class Example (db.Model) :
 row_num = db.IntegerProperty(required=True)
 updated = db.IntegerProperty(default=0)
 ...
 ...

ただし、データストアには、デフォルトで update = 0 が設定されていないエンティティが 200 万以上あります。

これを行う最も簡単な方法は何ですか? これは、管理端末から 1 つのコマンドで実行できますか?

4

1 に答える 1

2

オブジェクトを反復処理し、それらを取得し (一度に最大 1000 個まで)、プロパティ値を更新してから保存するスクリプトを作成する必要があります。

いいえ、これは同じ種類のことを行う標準の SQL DB (単一の を発行するだけでよいUPDATE) に比べて実際には効率的ではありませんが、BigTable (GAE データストアの背後にあるバッキング テクノロジ) は SQL リレーショナル データベースではなく、さまざまなことに優れているように設計されたさまざまなアーキテクチャであり、一度に数百万行にまたがる単一のフィールドを更新するために最適化されていないため、GQL 構文UPDATEにはステートメントの概念がないのです。

編集:

David がコメントで親切に指摘したように、Google は最近、これを支援するために使用できるMapper APIをリリースしました。

于 2010-07-26T04:45:04.000 に答える