gpt4 book ai didi

python - 如何正确分配_ids?

转载 作者:太空狗 更新时间:2023-10-30 02:49:13 24 4
gpt4 key购买 nike

我希望我的 id 为 < 999999999 但现在尝试编程它似乎有相反的效果,我只是让 id 变大,当我尝试分配 id 开始 > 结束时?

start, end = User.allocate_ids(max=999999999)
logging.info('start %d' % start)
logging.info('end %d' % end)
lower = start if start < end else end
key = User(id=lower).put()
logging.info('key: '+str(key))
user = key.get()
user.add_auth_id(email)

我的日志输出显示分配的 ID 是错误的:

2012-02-13 03:19:07.396 start 98765439124
I 2012-02-13 03:19:07.396 end 98765439123

我该如何解决这个问题?

更新

我最终使用的肮脏解决方法是制作一种我不应该做的自己的 ID 系统,但这是这种情况下唯一的解决方案,我认为这不会造成冲突或重复,如果实体开始填满,但就目前而言,这似乎是一个对用户来说可以接受的解决方案,尽管从代码上看可能不太好看:

    new_id = random.randint(1,999999999)
logging.info('testing new id: %d' % new_id)
while User.get_by_id(new_id) != None:
new_id = random.randint(1,999999999)
logging.info('creating new id: %d' % new_id)
key = User(id=new_id).put()

最佳答案

NDB documentation 中所述: allocateIds(max=) 将返回可用的第一个 ID,以防您尝试保留已分配的 ID。

在您的情况下,所有直到 999999999 的 ID 之前都已分配(可能通过对 allocate_ids 的其他调用),98765439124 是第一个可用的 ID,98765439123 是已分配的最后一个。

请看下面的例子:

>>> Foo.allocate_ids(max=26740080011040)
(26740080011031L, 26740080011040L)

分配所有 id 最多为 26740080011040

>>> Foo.allocate_ids(max=26740080011040)
(26740080011041L, 26740080011040L)

26740080011040 以内的所有 ID 都已分配,第一个可用的 ID 是 26740080011041,最后分配的是 26740080011040

>>> Foo.allocate_ids(max=26740080011050)
(26740080011041L, 26740080011050L)

分配所有 id 最多为 26740080011050

关于python - 如何正确分配_ids?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9255962/

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