1

バルクアップローダーを使用して、AppEngineデータストアにデータをアップロードしようとしています。私のエンティティタイプの1つには、別のプロパティから計算される1つのプロパティがあるため、この計算を行うためにインポートされる各エンティティに対して、後処理を実行したいと思います。post_import_function変換タグについての簡単な言及がありますが、実際の包括的なドキュメントや例はありません。

今のところ、post_import_functionを機能させるためだけに簡単なテストを実行しようとしています。

私のエンティティモデル:

class TestEntity(db.Model):
    location = db.GeoPtProperty()
    cells = db.StringListProperty() # Computed from location

私のbulkloader.yamlファイルの関連部分は次のようになります:

- kind: TestEntity
  [... connector info ...]
  property_map:
    [... transform info for __key__ and location here ...]
  post_import_function: post_transform.post_process_testentity

そして私のpost_process_testentity関数:

def post_process_testentity(input_dict, entity_instance, bulkload_state):
    entity_instance.cells = [u'Hello there!']
    return entity_instance

これらすべてを使用してデータのアップロードを行うと、エラーは発生しません(正しく実行されたいくつかの印刷ステートメントを内部に追加したため、post_process_testentityが入力されていることがわかります)。後処理機能がまったく効果がないことを除いて、アップロードに関するすべてが機能します。データビューアを使用すると、データストアに「Hellothere!」が表示されません。

誰かが私を少し助けてくれませんか?ありがとうございました!

4

1 に答える 1

1

他の人が同様の問題を抱えている場合に備えて、上記のテストを実行しました。entity_instance後処理関数では、実際にgoogle.appengine.api.datastore.Entityは のサブクラスである型のようですdict。したがって、post_process_testentity 関数へのこの変更は機能しました。

def post_process_testentity(input_dict, entity_instance, bulkload_state):
    entity_instance['cells'] = [u'Hello there!']
    return entity_instance

ただし、これは、さまざまなデバッグ メッセージを出力して遊んでみただけでわかりました。このようなものがどこかに文書化されていれば素晴らしいでしょう。そのようなドキュメントがどこにあるか知っている人はいますか?

于 2011-02-20T04:33:24.820 に答える