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

2 投票
2 回答
2678 浏览
提问于 2025-04-16 09:10

我打算创建一个由字母和数字组成的唯一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的模块。

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

撰写回答