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制作检测Linux运行信息的工具的教程
Apr 01 Python
在ironpython中利用装饰器执行SQL操作的例子
May 02 Python
python轻松查到删除自己的微信好友
Jan 10 Python
Python新手们容易犯的几个错误总结
Apr 01 Python
关于pip的安装,更新,卸载模块以及使用方法(详解)
May 19 Python
pandas dataframe添加表格框线输出的方法
Feb 08 Python
python监控进程状态,记录重启时间及进程号的实例
Jul 15 Python
30秒学会30个超实用Python代码片段【收藏版】
Oct 15 Python
Python中类似于jquery的pyquery库用法分析
Dec 02 Python
详解PyQt5中textBrowser显示print语句输出的简单方法
Aug 07 Python
QT5 Designer 打不开的问题及解决方法
Aug 20 Python
详解Python类和对象内容
Jun 22 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
dhtmlxTree目录树增加右键菜单以及拖拽排序的实现方法
2013/04/26 PHP
PHP 获取远程文件大小的3种解决方法
2013/07/11 PHP
php实现保存submit内容之后禁止刷新
2014/03/19 PHP
扩展jQuery 键盘事件的几个基本方法
2009/10/30 Javascript
JavaScript DOM 学习第二章 编辑文本
2010/02/19 Javascript
如何将一个String和多个String值进行比较思路分析
2013/04/22 Javascript
window.location.href中url中数据量太大时的解决方法
2013/12/23 Javascript
node.js入门教程迷你书、node.js入门web应用开发完全示例
2014/04/06 Javascript
javascript去除字符串中所有标点符号和提取纯文本的正则
2014/06/07 Javascript
javascript中几个容易混淆的概念总结
2015/04/14 Javascript
JQuery中Bind()事件用法分析
2015/05/05 Javascript
web前端vue实现插值文本和输出原始html
2018/01/19 Javascript
vue实现点击当前标签高亮效果【推荐】
2018/06/22 Javascript
JavaScript实现封闭区域布尔运算的示例代码
2018/06/25 Javascript
JavaScript设计模式之观察者模式实例详解
2019/01/16 Javascript
如何解决日期函数new Date()浏览器兼容性问题
2019/09/11 Javascript
关于layui 实现点击按钮添加一行(方法渲染创建的table)
2019/09/29 Javascript
原生js+css调节音量滑块
2020/01/15 Javascript
如何手动实现一个 JavaScript 模块执行器
2020/10/16 Javascript
[04:07]显微镜下的DOTA2第八期——英雄复活动作
2014/06/24 DOTA
python批量修改文件编码格式的方法
2018/05/31 Python
pyqt5 使用label控件实时显示时间的实例
2019/06/14 Python
python 使用装饰器并记录log的示例代码
2019/07/12 Python
Python Pandas数据中对时间的操作
2019/07/30 Python
python读写csv文件的方法
2019/08/13 Python
python程序文件扩展名知识点详解
2020/02/27 Python
django-xadmin根据当前登录用户动态设置表单字段默认值方式
2020/03/13 Python
pymysql模块使用简介与示例
2020/11/17 Python
使用phonegap进行提示操作的具体方法
2017/03/30 HTML / CSS
北大研究生linux应用求职信
2013/10/29 职场文书
党性锻炼的心得体会
2014/09/03 职场文书
医德医风自我评价
2014/09/19 职场文书
2015年妇联工作总结范文
2015/04/22 职场文书
2016年感恩父亲节活动总结
2016/04/01 职场文书
python基础之模块的导入
2021/10/24 Python
java获取一个文本文件的编码(格式)信息
2022/09/23 Java/Android