在Python中生成特征化的唯一ID
我打算创建一个由字母和数字组成的唯一ID。这个ID的格式大概是这样的:
XXXX-XXXX-XXXX-XXXX
其中的X是数字、小写字母和大写字母的组合。这个ID会存储在mysql数据库里,并且会不断增加,以保持数据的一致性。
有没有什么建议可以帮助我开始呢?
2 个回答
15
使用 uuid
模块;
>>> import uuid
# make a UUID based on the host ID and current time
>>> uuid.uuid1()
UUID('a8098c1a-f86e-11da-bd1a-00112444be1e')
# make a UUID using an MD5 hash of a namespace UUID and a name
>>> uuid.uuid3(uuid.NAMESPACE_DNS, 'python.org')
UUID('6fa459ea-ee8a-3ca4-894e-db77e160355e')
# make a random UUID
>>> uuid.uuid4()
UUID('16fd2706-8baf-433b-82eb-8c7fada847da')
# make a UUID using a SHA-1 hash of a namespace UUID and a name
>>> uuid.uuid5(uuid.NAMESPACE_DNS, 'python.org')
UUID('886313e1-3b8a-5372-9b90-0c9aee199e5d')
你可以用以下方法来模拟你需要的4个字符;
>>> "-".join([x[:4].upper() for x in str(uuid.uuid4()).split("-")])
'C984-EE70-4BFD-9963-9BB9'
>>> "-".join([x[:4].upper() for x in str(uuid.uuid4()).split("-")])
'30D7-4356-493E-B887-2671
3
虽然这和你指定的格式不一样,你有没有考虑过使用UUID呢?Python从2.5版本开始就有一个叫uuid
的模块。