ndb使用paren分配_id

2024-04-19 07:59:58 发布

您现在位置:Python中文网/ 问答频道 /正文

关于Ndb allocate_ids()有很多问题似乎是Ndb中的一个模糊区域,但是我发现这个问题没有得到处理。在

当使用父/子层次结构时,ids对于给定的父键应该是唯一的,因此您可以创建

entity_1 = MyEntity(parent=my_parent_key_1, id=23)    
entity_2 = MyEntity(parent=my_parent_key_2, id=23)

现在,当您需要为显式赋值分配id时,静态函数MyEntity.allocate_ids()将父函数作为参数。因此,您可以假设带有parent参数的allocate_ids()为给定的父对象保留了一个id范围,而不是为任何父对象保留。在

但是:

^{pr2}$

返回̀(1L, 1000L)。前1000个ID被分配。现在运行:

MyEntity.allocate_ids(max=1000, parent=ndb.Key(MyParentEntity, 'bbb'))

返回(1001L, 1000L),这意味着第一个可用的id是1001L,并且没有分配任何新的内容,尽管父键不同。在

现在运行:

MyEntity.allocate_ids(max=2000, parent=ndb.Key(MyParentEntity, 'ccc'))

返回(1001L, 2000L),这意味着分配了1001到2000的id。在

因此,allocate_ids实际上独立于父键。你可能想知道为什么把父密钥作为参数传递。在

任何人对此都有解释,或者可以指出与这种奇怪行为相关的文档吗?在

{And way}有一个与范围相关的问题{1和范围有关吗?在


Tags: 对象key函数idids参数mymax
1条回答
网友
1楼 · 发布于 2024-04-19 07:59:58

我不知道这有什么关系。分配_ID的唯一目的是确保如果您不自己定义一个完整的密钥,GAE不会自动给实体指定特定的ID值。它不做任何其他事情;特别是,它不会对您使用这些id执行的操作施加任何限制。当然没有什么可以阻止您,与您在注释中所说的相反,为两种不同的实体类型使用相同的分配ID值。在

相关问题 更多 >