问题a:能否绝对保证从NDB成功检索到的实体不会包含值为None的键,也不会包含值为None的key.id()?这份保证书是在文档中的任何地方写的吗?
问题b:键是否将id存储为str/int?或者,要用key.id()解密的散列中存储的密钥是否会被调用?如果有,则继续问题c。
问题c:密钥散列中的字符数是有限制的还是有一定数量的?如果是,则转到问题d。
问题d:当尝试创建密钥时,构造函数是否在尝试创建密钥时限制其id的字符串长度?如果不是,则转到问题e。
问题e:如果我构造一个密钥,其字符串id len等于密钥散列的len + 1,如果散列的取值范围小于我提供的字符串id的取值范围,那么密钥如何使用id()解密和检索id?
耽误您时间,实在对不起!
发布于 2016-06-09 20:03:41
答:如果您曾经检索到一个带有Null键(或id)的实体,这将表明NDB有一个更大的问题。据我所知,这是不可能的,因为每个实体都需要一个密钥。不,除了source code之外,没有对此的“保证”。
答案b:密钥将id存储为str/int,如source code中所示
def id(self):
"""Return the string or integer id in the last (kind, id) pair, if any.
Returns:
A string or integer id, or None if the key is incomplete.
"""
return self.__pairs[-1][1]
因为它不使用散列,所以我没有继续回答c、d和e。
https://stackoverflow.com/questions/37338055
复制相似问题