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利用正则表达式搜索单词示例代码
Sep 24 Python
flask框架实现连接sqlite3数据库的方法分析
Jul 16 Python
对python3中pathlib库的Path类的使用详解
Oct 14 Python
python实现维吉尼亚加密法
Mar 20 Python
python基础梳理(一)(推荐)
Apr 06 Python
520使用Python实现“我爱你”表白
May 20 Python
django 实现后台从富文本提取纯文本
Jul 02 Python
获取CSDN文章内容并转换为markdown文本的python
Sep 06 Python
python利用后缀表达式实现计算器功能
Feb 22 Python
Python机器学习之PCA降维算法详解
May 19 Python
linux中nohup和后台运行进程查看及终止
Jun 24 Python
Pandas 数据编码的十种方法
Apr 20 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
PHP下操作Linux消息队列完成进程间通信的方法
2010/07/24 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
2013/06/28 PHP
PHP连接SQLServer2005方法及代码
2013/12/26 PHP
Zend Framework教程之前端控制器Zend_Controller_Front用法详解
2016/03/07 PHP
浅谈javascript实现八大排序
2015/04/27 Javascript
javascript检测移动设备横竖屏
2016/05/21 Javascript
js改变透明度实现轮播图的算法
2020/08/24 Javascript
JSON对象 详解及实例代码
2016/10/18 Javascript
BootStrap modal模态弹窗使用小结
2016/10/26 Javascript
JavaScript登录验证码的实现
2016/10/27 Javascript
JS实现unicode和UTF-8之间的互相转换互转
2017/07/05 Javascript
nodejs实现的简单web服务器功能示例
2018/03/15 NodeJs
jQuery实现简单复制json对象和json对象集合操作示例
2018/07/09 jQuery
vue.js父子组件通信动态绑定的实例
2018/09/28 Javascript
vue+echarts实现动态绘制图表及异步加载数据的方法
2018/10/17 Javascript
Vue中的基础过渡动画及实现原理解析
2018/12/04 Javascript
9102年webpack4搭建vue项目的方法步骤
2019/02/20 Javascript
vue使用canvas实现移动端手写签名
2020/09/22 Javascript
Vue使用Element实现增删改查+打包的步骤
2020/11/25 Vue.js
JavaScript canvas实现跟随鼠标移动小球
2021/02/09 Javascript
[49:56]VG vs Optic 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
浅析Python中元祖、列表和字典的区别
2016/08/17 Python
python subprocess 杀掉全部派生的子进程方法
2017/01/16 Python
Python将图片转换为字符画的方法
2020/06/16 Python
Python实现字符串匹配的KMP算法
2019/04/04 Python
python绘图模块matplotlib示例详解
2019/07/26 Python
python matplotlib饼状图参数及用法解析
2019/11/04 Python
SmartBuyGlasses英国:购买太阳镜和眼镜
2018/01/29 全球购物
俄罗斯Sportmarket体育在线商店:用于旅游和户外活动
2019/11/12 全球购物
工商管理应届生求职信
2013/10/07 职场文书
多媒体编辑专业毕业生求职信
2014/06/13 职场文书
2016教师党员学习心得体会
2016/01/21 职场文书
2016年圣诞节义工活动总结
2016/04/01 职场文书
市语委办2016年第十九届“推普周”活动总结
2016/04/05 职场文书
《别在吃苦的年纪选择安逸》读后感3篇
2019/11/30 职场文书
MySQL之MyISAM存储引擎的非聚簇索引详解
2022/03/03 MySQL