所以我们可以generate a unique id with str(uuid.uuid4())
,它有36个字符长。
是否有其他方法生成一个字符更短的唯一ID?
编辑:
如果ID可用作主键,则更好
粒度应大于1毫秒
这段代码可以被分发,所以我们不能假设时间独立。
最佳答案
如果这是用作db中的主键字段,请考虑只使用自动递增整数。str(uuid.uuid4())
是36个字符,但它有四个无用的破折号(-
),并且限制为0-9a-f。
32个字符的更好uuid4:
>>> uuid.uuid4().hex
'b327fc1b6a2343e48af311343fc3f5a8'
或者只是b64编码和切片一些铀字节(由你来保证唯一性):
>>> base64.b64encode(os.urandom(32))[:8]
b'iR4hZqs9'