如何将键的字符串版本转换回我可以使用get()函数获取实体实例的表单

时间:2012-12-07 03:07:56

标签: google-app-engine google-cloud-datastore

class Key(encoded = None) 数据存储区对象的唯一键。

通过将Key对象传递给str(),可以将键转换为字符串。字符串是“urlsafe” - 它仅使用有效用于URL的字符。通过将密钥的字符串表示传递给Key构造函数(编码参数),可以将其转换回Key对象。

注意:密钥的字符串表示看起来很神秘,但未加密!它可以转换回原始密钥数据,包括种类和标识符。如果您不想将此数据公开给您的用户(并允许他们轻松猜出其他实体的密钥),那么请加密这些字符串或使用其他内容。

编码 要转换回Key的Key实例的str形式。

2 个答案:

答案 0 :(得分:13)

如果您使用的是Python NDB,则可以将密钥转换为URL安全字符串,如下所示:

key_str = yourmodel.key.urlsafe()

您可以将URL安全字符串转换回Key,如下所示:

my_key = ndb.Key(urlsafe=key_str) 

有关详细信息,请查看NDB Key class

答案 1 :(得分:3)

如果我理解正确,您需要获取编码的Key字符串并将其转换回Key对象。如果是这样,你可以这样做:

from google.appengine.ext.db import Key

# ...
key_str = '<your_key_string>'    
key_obj = Key(key_str) # or Key(encoded=key_str)

entity = db.get(key_obj) # Although the string will work here as well