Python生成并处理UUID的实现方式

Felix
Felix
发布时间:2026-10-13| 7人浏览过
原创

本文详细介绍Python中uuid模块的四种生成方法(uuid1、uuid3、uuid4、uuid5)的区别与应用场景,重点解析基于时间戳、随机数及哈希算法的生成原理。同时提供去除UUID中连字符'-'的实用代码示例,帮助开发者在数据库主键或唯一标识处理中更高效地使用UUID。

UUID基本概念与应用场景

UUID(Universally Unique Identifier)即通用唯一识别码,作为一种标识符广泛应用于各个领域。例如在数据库设计中,它常被用作主键,其核心原理是对任意对象进行唯一编码。

对于初学者而言,看到类似varchar(40)这样字符串类型的主键定义可能会感到困惑,因为字符串无法像整数那样自增。此时,应用UUID便成为解决该问题的有效方案。

尽管大多数数据库都内置了生成UUID的功能,但考虑到可读性问题以及其较长的字符串长度带来的潜在弊端,通常建议尽量避免将其直接用作数据库主键。

Python生成UUID的四种方法

接下来简要说明Python中生成UUID的具体方法。

Python标准库中包含一个名为uuid的模块,导入后即可使用其提供的四个主要方法:uuid1()、uuid3()、uuid4()和uuid5()。

需要注意的是,该模块中并不存在uuid2()方法。


# -*- coding:utf-8 -*-
import uuid
 
print uuid.uuid1()
#bf1dfacf-67d8-11e8-9a23-408d5c985711
print uuid.uuid3(uuid.NAMESPACE_DNS, 'yuanlin')
#ddb366f5-d4bc-3a20-ac68-e13c0560058f
print uuid.uuid4()
#144d622b-e83a-40ea-8ca1-66af8a86261c
print uuid.uuid5(uuid.NAMESPACE_DNS, 'yuanlin')
#4a47c18d-037a-5df6-9e12-20b643c334d3

从外观上看,生成的UUID均为36个字符,但它们内部生成的逻辑存在显著差异,下面将逐一分析。

uuid1()方法根据当前时间戳和网卡的MAC地址生成。生成的字符串末尾12个字符(如408d5c985711)对应MAC地址,这保证了生成的唯一性。然而,这种生成方式会暴露网卡的MAC地址,存在隐私泄露风险。

uuid3()方法需要用户指定namespace(命名空间)和具体的字符串,随后通过MD5哈希算法生成。由于使用场景较为特定,该方法在实际应用中相对少见。

uuid4()基于随机数生成。虽然理论上存在碰撞(即生成相同UUID)的可能性,但概率极低,类似于中彩票。由于生成过程随机且使用便捷,该方法在实际开发中使用频率较高。

uuid5()在用法上与uuid3()相似,同样由用户指定namespace和字符串。区别在于,uuid5()采用SHA1哈希算法而非MD5进行计算。

处理UUID中的连字符

接下来介绍对UUID的简单处理。由于UUID中间包含连字符'-',在某些场景下可能需要去除该字符,操作非常简单。


uid = str(uuid.uuid4())
suid = ''.join(uid.split('-'))

补充拓展:Python生成UUID并去除中间的'-'符号。

UUID(Universally Unique Identifier)是软件构建的标准之一,号称能对任何事物进行唯一编码。下面演示如何在Python中生成UUID编码并去除其中的符号'-'。


import uuid

s_uuid=str(uuid.uuid4())

print s_uuid 

l_uuid=s_uuid.split('-')

s_uuid=''.join(l_uuid)

print s_uuid

第一次print输出的s_uuid结果为:

4717cf79-1a64-4156-a3e8-883f1b76210d

第二次print输出的s_uuid结果为:

4717cf791a644156a3e8883f1b76210d

以上关于Python生成并处理UUID的实现方式全部内容已分享完毕,希望能对读者有所帮助,也欢迎大家继续支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。