データストア自体は実際にはPythonクラスやデータモデルそのものを知らない/気にしませんが、これは実際にはGAE db
またはndb
クライアントライブラリに固有の実装の詳細です。あなたは(モデル定義せずに、一般的なPythonクライアントライブラリを使用しています)Creating an entity例ではそれを見ることができます - エンティティデータは、名前と値のペアを辞書に簡単です:
task = datastore.Entity(client.key('Task'))
task.update({
'category': 'Personal',
'done': False,
'priority': 4,
'description': 'Learn Cloud Datastore'
})
でエンティティモデルを削除/名前変更しますアプリケーションはデータストア内のエンティティを削除しませんが、データストアブラウザでエンティティを確認することはできます。
すでに作成されたエンティティのキーには、エンティティ種類(文字列として)が埋め込まれています。それは輸入モデルに対してデータストアから返されたデータのチェックを行うためKindError
例外が発生しますその保存されたキーにdb.get()
を実行しようとすると:あなたがあなたのモデルのリワークを実行したいのであれば
Traceback (most recent call last):
File "/usr/local/google_appengine/google/appengine/tools/devappserver2/python/request_handler.py", line 226, in handle_interactive_request
exec(compiled_code, self._command_globals)
File "<string>", line 12, in <module>
File "/usr/local/google_appengine/google/appengine/ext/db/__init__.py", line 1540, in get
return get_async(keys, **kwargs).get_result()
File "/usr/local/google_appengine/google/appengine/api/apiproxy_stub_map.py", line 613, in get_result
return self.__get_result_hook(self)
File "/usr/local/google_appengine/google/appengine/datastore/datastore_rpc.py", line 1715, in __get_hook
entities = extra_hook(entities)
File "/usr/local/google_appengine/google/appengine/api/datastore.py", line 643, in local_extra_hook
return extra_hook(result)
File "/usr/local/google_appengine/google/appengine/ext/db/__init__.py", line 1509, in extra_hook
cls1 = class_for_kind(entity.kind())
File "/usr/local/google_appengine/google/appengine/ext/db/__init__.py", line 299, in class_for_kind
raise KindError('No implementation for kind \'%s\'' % kind)
KindError: No implementation for kind 'Horse'
をし、既に保存されているデータを再利用してください。古いモデルを保存しておき、新しいモデルでデータを読み込んで書き戻す必要があります。
ダンの答えはスポット上にあります。 db libを経由して基礎となるエンティティをフェッチすることができます。エンティティを移行して(フェッチ、プット)、新しいモデルを反映するようにエンティティを調整することができます。 –