gpt4 book ai didi

python - ndb allocate_ids 与父级

转载 作者:太空宇宙 更新时间:2023-11-03 17:08:24 25 4
gpt4 key购买 nike

有很多与 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)

现在,当您需要显式分配 ids 时,静态函数 MyEntity.allocate_ids() 将父级作为参数。因此,您会假设带有父参数的 allocate_ids() 为给定父项保留一系列 id,而不是为任何父项

但是:

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

返回 ̀(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实际上独立于父键。您可能想知道为什么要传递parent_key 作为参数。

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

还有一个相关问题:有没有办法知道通过调用 allocate_ids() 保留了哪些 id 范围(或多个范围)?

最佳答案

我不确定为什么这很重要。 allocate_ids 的唯一目的是确保如果您自己没有定义完整 key ,GAE 不会自动为实体提供某些 ID 值。它不做任何其他事情;特别是,它不会对您使用这些 ID 执行的操作施加任何限制。与您在评论中所说的相反,当然没有什么可以阻止您为两种不同的实体类型使用相同的分配 ID 值。

关于python - ndb allocate_ids 与父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34357490/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com