Python使用uuid库生成唯一标识ID


Posted in Python onFebruary 12, 2020

uuid是128位的全局唯一标识符(univeral unique identifier),通常用32位的一个字符串的形式来表现。有时也称guid(global

unique identifier)。python中自带了uuid模块来进行uuid的生成和管理工作。

python中的uuid模块基于信息如MAC地址、时间戳、命名空间、随机数、伪随机数来uuid。具体方法有如下几个:

uuid.uuid1()

基于MAC地址,时间戳,随机数来生成唯一的uuid,可以保证全球范围内的唯一性。

uuid.uuid2()

算法与uuid1相同,不同的是把时间戳的前4位置换为POSIX的UID。不过需要注意的是python中没有基于DCE的算法,所以python的uuid模块中没有uuid2这个方法。

uuid.uuid3(namespace,name)

通过计算一个命名空间和名字的md5散列值来给出一个uuid,所以可以保证命名空间中的不同名字具有不同的uuid,但是相同的名字就是相同的uuid了。【感谢评论区大佬指出】namespace并不是一个自己手动指定的字符串或其他量,而是在uuid模块中本身给出的一些值。比如uuid.NAMESPACE_DNS,uuid.NAMESPACE_OID,uuid.NAMESPACE_OID这些值。这些值本身也是UUID对象,根据一定的规则计算得出。

uuid.uuid4()

通过伪随机数得到uuid,是有一定概率重复的

uuid.uuid5(namespace,name)

和uuid3基本相同,只不过采用的散列算法是sha1

一般而言,在对uuid的需求不是很复杂的时候,uuid1方法就已经够用了,使用方法如下:

#coding=utf-8
 
import uuid
 
name = 'test_name'
# namespace = 'test_namespace'
namespace = uuid.NAMESPACE_URL
 
print uuid.uuid1()
print uuid.uuid3(namespace,name)
print uuid.uuid4()

以下是python官方提供的参考示例

>>> 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')

生成 32 位哈希值

uuid.uuid4().hex
Out[3]: 
'28128f59692242b2854ece961ea1dd35'

更多关于Python使用uuid库生成唯一标识ID的文章大家可以点击下面的相关链接

Python 相关文章推荐
Python pickle模块用法实例
Apr 14 Python
利用Python脚本实现ping百度和google的方法
Jan 24 Python
Python计算斗牛游戏概率算法实例分析
Sep 26 Python
Python实现的栈(Stack)
Jan 26 Python
python开启debug模式的方法
Jun 27 Python
详解python uiautomator2 watcher的使用方法
Sep 09 Python
Python的缺点和劣势分析
Nov 19 Python
python 字典访问的三种方法小结
Dec 05 Python
django在保存图像的同时压缩图像示例代码详解
Feb 11 Python
Python接口自动化判断元素原理解析
Feb 24 Python
Django 解决由save方法引发的错误
May 21 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
May 25 Python
将python文件打包exe独立运行程序方法详解
Feb 12 #Python
Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解
Feb 12 #Python
Python sep参数使用方法详解
Feb 12 #Python
Python多重继承之菱形继承的实例详解
Feb 12 #Python
Python实现桌面翻译工具【新手必学】
Feb 12 #Python
PyCharm无法引用自身项目解决方式
Feb 12 #Python
pycharm不能运行.py文件的解决方法
Feb 12 #Python
You might like
Win7下手动安装apache2.2、php5.4笔记
2015/04/03 PHP
JavaScript 异步调用框架 (Part 4 - 链式调用)
2009/08/04 Javascript
jquery 可拖拽的窗体控件实现代码
2010/03/21 Javascript
用js写了一个类似php的print_r输出换行功能
2013/02/18 Javascript
html组件不可输入(只读)同时任何组件都有效
2013/04/01 Javascript
JavaScript利用构造函数和原型的方式模拟C#类的功能
2014/03/06 Javascript
EasyUI的doCellTip实现鼠标放到单元格上提示单元格内容
2016/08/24 Javascript
深入理解requestAnimationFrame的动画循环
2016/09/20 Javascript
Angularjs上传图片实例详解
2017/08/06 Javascript
vue进行图片的预加载watch用法实例讲解
2018/02/07 Javascript
小程序封装路由文件和路由方法(5种全解析)
2019/05/26 Javascript
js获取浏览器地址(获取第1个斜杠后的内容)
2019/09/03 Javascript
JS实现网页时钟特效
2020/03/25 Javascript
vue-cli3项目配置eslint代码规范的完整步骤
2020/09/10 Javascript
javascript实现随机抽奖功能
2020/12/30 Javascript
[44:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第二局
2016/03/03 DOTA
[45:18]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第一场
2018/04/04 DOTA
[01:21:58]守擂赛DOTA2第一周决赛
2020/04/22 DOTA
[01:08:29]DOTA2-DPC中国联赛定级赛 RNG vs Aster BO3第一场 1月9日
2021/03/11 DOTA
python3中property使用方法详解
2019/04/23 Python
如何理解Python中包的引入
2020/05/29 Python
python datetime时间格式的相互转换问题
2020/06/11 Python
Selenium之模拟登录铁路12306的示例代码
2020/07/31 Python
Python爬虫之Selenium库的使用方法
2021/01/03 Python
戴尔美国官网:Dell
2016/08/31 全球购物
英国No.1文具和办公用品在线:Euroffice
2016/09/21 全球购物
Willer台湾:日本高速巴士/夜行巴士预约
2017/07/09 全球购物
俄罗斯最大的隐形眼镜销售网站:Ochkov.Net
2021/02/07 全球购物
表彰先进的通报
2014/01/31 职场文书
管理学院毕业生自荐信范文
2014/03/10 职场文书
慰问信格式
2015/02/14 职场文书
2015年预算员工作总结
2015/05/14 职场文书
公司考勤管理制度
2015/08/04 职场文书
500字作文之关于爸爸
2019/11/14 职场文书
win11无法登录onedrive错误代码0x8004def7怎么办 ?
2022/04/05 数码科技
使用Python获取字典键对应值的方法
2022/04/26 Python