2

エンティティ キーが実際のキーではなく文字列として格納されているアプリを継承したので、もちろん HRD データストアへの移行用の自動ツールによって更新されません。

文字列として保存されているキーを、新しいアプリ ID の新しいキーを表す文字列にプログラムで変換できますか (そうであれば、どのように) 変換できますか? (そもそも文字列として保存すべきではないという事実はさておき)。

4

2 に答える 2

2

使用している場合ndb:

new_key = ndb.Key(urlsafe=string_value_of_key)

__appアプリ ID を変更するには、public 属性を介して保護された属性にアクセスできます。_Key__app

new_key._Key__app = 'new-app-id'

使用している場合db:

old_key = db.Key(encoded=string_value_of_key)

次に、キーを新しいアプリ ID のキーに変換するには、次を使用できます。

new_key = db.Key.from_path(*old_key.to_path(), 
                           _app='new-app-id',
                           parent=old_key.parent(), 
                           namespace=old_key.namespace())
于 2012-12-09T18:03:46.517 に答える
1

ありがたいことに、Key Class を使用する方法があります。以下は、親を持たないエンティティのキ​​ーに対してのみ機能しますが、Key クラスの parent() メソッドを使用して、親を持つエンティティに対してこのメ​​ソッドを一般化できると思います。

NEW アプリで次のコードを実行して、新しいキー文字列を取得します。

old_key = db.Key('old_key_string_in_here')
new_key = db.Key.from_path(old_key.kind(), old_key.id())
new_key_string = str(new_key)
于 2012-12-09T18:08:20.347 に答える