问题a:是否有绝对保证从NDB成功检索的实体不包含值为None的键,也不包含值为None的key.id()?这个保证书写在文档的任何地方吗?
问题b:密钥是否将id存储为str / int?或者将密钥存储在哈希中以使用key.id()进行解密?如果有,请继续问题c。
问题c:密钥哈希中的字符数是限制还是设定数量?如果是,请继续问题d。
问题d:在尝试创建密钥时,构造函数在尝试创建密钥时是否限制其id的str len?如果不是,请继续回答问题。
问题e:如果我构造一个str的len等于len hash + 1的密钥,那么如果hash的值范围较小,密钥如何解密并检索id为id的id?比我提供的str id的值范围?
谢谢你的时间!
答案 0 :(得分:1)
答案a:如果您检索的密钥(或ID)为Null的实体,则表明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。