【发布时间】:2014-06-01 18:30:21
【问题描述】:
我正在使用 Python 的 UUID 函数为要存储在数据库中的对象创建唯一 ID:
>>> import uuid
>>> print uuid.uuid4()
2eec67d5-450a-48d4-a92f-e387530b1b8b
可以假设这确实是一个唯一的 ID 吗?
或者在接受它为有效之前,我是否应该仔细检查该唯一 ID 是否尚未针对我的数据库生成。
【问题讨论】:
-
This question 可能会提供信息。从本质上讲,ID 可能是不唯一的,但这种可能性非常小。
-
两个
uuid4s 碰撞的几率是16**32中的1。 -
@roippi 这并不容易。 UUID 的一部分是时间戳。因此,如果 UUID 是在不同时间生成的,则重复的概率为 0。否则,这取决于正在使用的 RNG。 In Python 3,如果可用,则使用 libc 或 libuuid 的 RNG。否则,它会尝试
os.urandom并回退到random模块。所以,总而言之,你应该是安全的。 (很抱歉过于具体,但我认为这可能很有趣,对你、对 OP 或其他人来说。)
标签: python uuid uniqueidentifier