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的Flask框架中使用日期和时间的教程
Apr 21 Python
详解Python 实现元胞自动机中的生命游戏(Game of life)
Jan 27 Python
Python3中的列表生成式、生成器与迭代器实例详解
Jun 11 Python
用Python实现筛选文件脚本的方法
Oct 27 Python
Python List cmp()知识点总结
Feb 18 Python
python日志logging模块使用方法分析
May 23 Python
python生成器推导式用法简单示例
Oct 08 Python
将python2.7添加进64位系统的注册表方式
Nov 20 Python
Windows下Anaconda安装、换源与更新的方法
Apr 17 Python
使用Pycharm(Python工具)新建项目及创建Python文件的教程
Apr 26 Python
python中sympy库求常微分方程的用法
Apr 28 Python
Manjaro、pip、conda更换国内源的方法
Nov 17 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预定义常量
2006/12/25 PHP
php中使用explode查找某个字符是否存在的方法
2011/07/12 PHP
ubuntu下配置nginx+php+mysql详解
2015/09/10 PHP
ThinkPHP在Cli模式下使用模板引擎的方法
2015/09/25 PHP
Yii框架扩展CGridView增加导出CSV功能的方法
2017/05/24 PHP
PHP判断函数是否被定义的方法
2019/06/21 PHP
prototype Element学习笔记(Element篇三)
2008/10/26 Javascript
jQuery实现的动态伸缩导航菜单实例
2015/05/07 Javascript
javascript代码调试之console.log 用法图文详解
2016/09/30 Javascript
微信小程序 九宫格实例代码
2017/01/21 Javascript
vue组件间通信解析
2017/03/01 Javascript
JavaScript自定义文本框光标
2017/03/05 Javascript
vue之nextTick全面解析
2017/05/17 Javascript
angular.js指令中transclude选项及ng-transclude指令详解
2017/05/24 Javascript
vue 2.1.3 实时显示当前时间,每秒更新的方法
2018/09/16 Javascript
如何使用pm2快速将项目部署到远程服务器
2019/03/12 Javascript
js中火星坐标、百度坐标、WGS84坐标转换实现方法示例
2020/03/02 Javascript
[11:33]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第二场
2018/04/06 DOTA
[11:44]Ti9 OG夺冠时刻
2019/08/25 DOTA
基于python的汉字转GBK码实现代码
2012/02/19 Python
python获取指定目录下所有文件名列表的方法
2015/05/20 Python
python实现基于SVM手写数字识别功能
2020/05/27 Python
浅谈Python2获取中文文件名的编码问题
2018/01/09 Python
pytorch cnn 识别手写的字实现自建图片数据
2018/05/20 Python
对Python 检查文件名是否规范的实例详解
2019/06/10 Python
Python多线程thread及模块使用实例
2020/04/28 Python
python使用Windows的wmic命令监控文件运行状况,如有异常发送邮件报警
2021/01/30 Python
英国最大的在线床超市:Bed Star
2019/01/24 全球购物
函授毕业生的自我鉴定
2013/11/26 职场文书
大三学生入党思想汇报
2014/01/02 职场文书
关于母亲节的感言
2014/02/04 职场文书
小学学校评估方案
2014/06/08 职场文书
学校党员对照检查材料
2014/08/28 职场文书
幼儿园小班教育随笔
2015/08/14 职场文书
六年级作文之自救
2019/12/19 职场文书
《最终幻想14》6.01版本4月5日推出 追加新任务新道具
2022/04/03 其他游戏