dackdive's blog

新米webエンジニアによる技術ブログ。JavaScript(React), Salesforce, Python など

[GAE]urlsafeなKey名から元のKey名を取得する

想定しているシチュエーションとしてはこんな感じ。

  • データストアのあるモデルのKey名には、特定の情報を連結した文字列をurlsafeBASE64エンコードした文字列を使っている
  • エンティティのKey名に使用しているurlsafeな文字列だけがわかっていて、その文字列から元の文字列を復元したい
    (そして復元したKey名をパースして特定の情報を取り出したい)

方法

my_key = ndb.Key(urlsafe=urlsafe_key_str)

で一旦Keyオブジェクトを取得した後

my_key.string_id()

で取得できます。

ちなみに、あるエンティティからurlsafeなkey名を取得するには

urlsafe_key_str = [モデル].key.urlsafe()

です。

リファレンス

NDB Key クラス  |  Python 2 の App Engine スタンダード環境  |  Google Cloud

google app engine - how to convert the string version of a key back into a form that I can use the get() function on to get the entity instance - Stack Overflow