在Python中生成特征化的唯一ID

时间:2010-12-29 15:45:30

标签: python

我打算从字符和数字中创建一个唯一的ID。 ID应该看起来像这样

XXXX-XXXX-XXXX-XXXX

其中X是数字,小写和上限字母的组合。此Id将存储在mysql数据库中,并将增加以保持数据的一致性。

关于如何开始的任何建议?

2 个答案:

答案 0 :(得分:16)

使用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

答案 1 :(得分:3)

虽然它与您指定的格式不同,您是否考虑过使用UUID? Python有一个uuid模块,从2.5开始。

http://docs.python.org/release/2.5.2/lib/module-uuid.html