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实现快速多线程ping的方法
Jul 15 Python
Python实现将xml导入至excel
Nov 20 Python
浅谈python中的getattr函数 hasattr函数
Jun 14 Python
tensorflow TFRecords文件的生成和读取的方法
Feb 06 Python
Django自定义用户认证示例详解
Mar 14 Python
python中yaml配置文件模块的使用详解
Apr 27 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
Apr 29 Python
python爬虫 Pyppeteer使用方法解析
Sep 28 Python
python爬虫爬取监控教务系统的思路详解
Jan 08 Python
Pyspark获取并处理RDD数据代码实例
Mar 27 Python
python3通过udp实现组播数据的发送和接收操作
May 05 Python
Python 里最强的地图绘制神器
Mar 01 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
一个SQL管理员的web接口
2006/10/09 PHP
探讨如何使用SimpleXML函数来加载和解析XML文档
2013/06/07 PHP
Laravel学习教程之本地化模块
2017/08/18 PHP
PHP attributes()函数讲解
2019/02/03 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
JavaScript访问样式表代码
2010/10/15 Javascript
jQuery LigerUI 插件介绍及使用之ligerDrag和ligerResizable示例代码打包
2011/04/06 Javascript
将光标定位于输入框最右侧实现代码
2012/12/04 Javascript
查看图片(前进后退)功能实现js代码
2013/04/24 Javascript
JavaScript计时器示例分析
2015/02/05 Javascript
jQuery实现鼠标悬停显示提示信息窗口的方法
2015/04/30 Javascript
JavaScript中Textarea滚动条不能拖动的解决方法
2015/12/15 Javascript
bootstrapValidator bootstrap-select验证不可用的解决办法
2017/01/11 Javascript
微信小程序 跳转传递数据的实例
2017/07/06 Javascript
Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法
2018/06/10 Javascript
JavaScript求一个数组中重复出现次数最多的元素及其下标位置示例
2018/07/23 Javascript
详解webpack打包后如何调试的方法步骤
2018/11/07 Javascript
微信小程序之事件交互操作实例分析
2018/12/03 Javascript
nodejs中实现用户注册路由功能
2019/05/20 NodeJs
layui table动态表头 改变表格头部 重新加载表格的方法
2019/09/21 Javascript
如何使用 JavaScript 操作浏览器历史记录 API
2020/11/24 Javascript
[01:04:32]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第二场 2月23日
2021/03/11 DOTA
python判断windows隐藏文件的方法
2014/03/21 Python
Python爬虫之pandas基本安装与使用方法示例
2018/08/08 Python
如何用Python破解wifi密码过程详解
2019/07/12 Python
英国最大的在线时尚眼镜店:Eyewearbrands
2019/03/12 全球购物
我有一个char * 型指针正巧指向一些int 型变量, 我想跳过它们。 为什么如下的代码((int *)p)++; 不行?
2013/05/09 面试题
如何定义一个可复用的服务
2014/09/30 面试题
医学院毕业生自荐信
2013/11/08 职场文书
总监职责范文
2013/11/09 职场文书
自我评价的范文
2014/02/02 职场文书
土木工程专业推荐信
2014/02/19 职场文书
社团活动总结怎么写
2014/06/30 职场文书
教师学习群众路线心得体会
2014/11/04 职场文书
一篇文章带你搞懂Python类的相关知识
2021/05/20 Python
Netflix《海贼王》真人版剧集多张片场照曝光
2022/04/04 日漫