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 相关文章推荐
写了个监控nginx进程的Python脚本
May 10 Python
Python Property属性的2种用法
Jun 21 Python
Python中死锁的形成示例及死锁情况的防止
Jun 14 Python
利用python实现命令行有道词典的方法示例
Jan 31 Python
Python数据结构之双向链表的定义与使用方法示例
Jan 16 Python
python 使用re.search()筛选后 选取部分结果的方法
Nov 28 Python
情人节快乐! python绘制漂亮玫瑰
Aug 18 Python
如何使用Cython对python代码进行加密
Jul 08 Python
Python通过zookeeper实现分布式服务代码解析
Jul 22 Python
基于Python的身份证验证识别和数据处理详解
Nov 14 Python
Python list和str互转的实现示例
Nov 16 Python
Python使用Beautiful Soup(BS4)库解析HTML和XML
Jun 05 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对称加密算法示例
2014/05/07 PHP
smarty模板引擎从配置文件中获取数据的方法
2015/01/22 PHP
PHP中SQL查询语句的id=%d解释(推荐)
2016/12/10 PHP
使用js获取QueryString的方法小结
2010/02/28 Javascript
JS localStorage实现本地缓存的方法
2013/06/22 Javascript
jquery中的on方法使用介绍
2013/12/29 Javascript
javascript进行四舍五入方法汇总
2014/12/16 Javascript
form表单序列化详解(推荐)
2017/08/15 Javascript
删除table表格行的实例讲解
2017/09/21 Javascript
video.js 一个页面同时播放多个视频的实例代码
2018/11/27 Javascript
详解关于element级联选择器数据回显问题
2019/02/20 Javascript
小程序实现层叠卡片滑动效果
2019/08/26 Javascript
Vue.js数字输入框组件使用方法详解
2019/10/19 Javascript
vue移动端的左右滑动事件详解
2020/06/17 Javascript
js实现前端界面导航栏下拉列表
2020/08/27 Javascript
针对Vue路由history模式下Nginx后台配置操作
2020/10/22 Javascript
神经网络(BP)算法Python实现及应用
2018/04/16 Python
Python操作word常见方法示例【win32com与docx模块】
2018/07/17 Python
tensorflow saver 保存和恢复指定 tensor的实例讲解
2018/07/26 Python
django进阶之cookie和session的使用示例
2018/08/17 Python
Pytorch 的损失函数Loss function使用详解
2020/01/02 Python
Python批量处理csv并保存过程解析
2020/05/16 Python
tensorflow使用CNN分析mnist手写体数字数据集
2020/06/17 Python
python对一个数向上取整的实例方法
2020/06/18 Python
Python爬虫之Selenium鼠标事件的实现
2020/12/04 Python
CSS3 实现童年的纸飞机
2019/05/05 HTML / CSS
趣天网日本站:Qoo10 JP
2019/09/18 全球购物
护理专业推荐信
2013/11/07 职场文书
奥巴马演讲稿
2014/01/08 职场文书
大学生开西餐厅创业计划书
2014/02/01 职场文书
《孔繁森》教学反思
2014/04/17 职场文书
公务员试用期满考核材料
2014/05/22 职场文书
2014年销售工作总结与计划
2014/12/01 职场文书
学生检讨书
2015/01/27 职场文书
2015年电厂工作总结范文
2015/05/13 职场文书
2015中学教师个人工作总结
2015/07/22 职场文书