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的web.py框架中url的设定方法
Jul 11 Python
使用Python写CUDA程序的方法
Mar 27 Python
使用python编写简单的小程序编译成exe跑在win10上
Jan 15 Python
Mac下Anaconda的安装和使用教程
Nov 29 Python
python实现共轭梯度法
Jul 03 Python
wxpython实现按钮切换界面的方法
Nov 19 Python
tensorflow 环境变量设置方式
Feb 06 Python
Tensorflow中tf.ConfigProto()的用法详解
Feb 06 Python
如何表示python中的相对路径
Jul 08 Python
如何解决pycharm调试报错的问题
Aug 06 Python
利用Python将多张图片合成视频的实现
Nov 23 Python
教你怎么用PyCharm为同一服务器配置多个python解释器
May 31 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
《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
无限级别菜单的实现
2006/10/09 PHP
PHP面向对象概念
2011/11/06 PHP
php中存储用户ID和密码到mysql数据库的方法
2013/02/06 PHP
PHP使用Pthread实现的多线程操作实例
2015/11/14 PHP
浅谈PHP面向对象之访问者模式+组合模式
2017/05/22 PHP
使用PHP连接数据库_实现用户数据的增删改查的整体操作示例
2017/09/01 PHP
PHP连接MySQL数据库的三种方式实例分析【mysql、mysqli、pdo】
2019/11/04 PHP
ie浏览器使用js导出网页到excel并打印
2014/03/11 Javascript
js使用递归解析xml
2014/12/12 Javascript
JavaScript中的异常捕捉介绍
2014/12/31 Javascript
Node.js开发之访问Redis数据库教程
2015/01/14 Javascript
jQuery获取DOM节点实例分析(2种方式)
2015/12/15 Javascript
AngularJS中的按需加载ocLazyLoad示例
2017/01/11 Javascript
JS实现json的序列化和反序列化功能示例
2017/06/13 Javascript
vue cli使用绝对路径引用图片问题的解决
2017/12/06 Javascript
微信小程序控制台提示warning:Now you can provide attr "wx:key" for a "wx:for" to improve performance解决方法
2019/02/21 Javascript
js中async函数结合promise的小案例浅析
2019/04/14 Javascript
创建与框架无关的JavaScript插件
2020/12/01 Javascript
[42:32]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.27
2020/12/01 DOTA
Python中使用logging模块打印log日志详解
2015/04/05 Python
python访问类中docstring注释的实现方法
2015/05/04 Python
深入理解Python中各种方法的运作原理
2015/06/15 Python
Django中使用CORS实现跨域请求过程解析
2019/08/05 Python
利用Python绘制有趣的万圣节南瓜怪效果
2019/10/31 Python
django自定义非主键自增字段类型详解(auto increment field)
2020/03/30 Python
H5离线存储Manifest原理及使用
2020/04/28 HTML / CSS
美国最大的船只买卖在线市场:Boat Trader
2018/08/04 全球购物
TheFork葡萄牙:欧洲领先的在线餐厅预订平台
2019/05/27 全球购物
新护士岗前培训制度
2014/02/02 职场文书
大学学生会竞选演讲稿
2014/04/25 职场文书
2014年关工委工作总结
2014/11/17 职场文书
乒乓球比赛通知
2015/04/27 职场文书
2015年控辍保学工作总结
2015/05/18 职场文书
研究生论文答辩开场白
2015/05/27 职场文书
python glom模块的使用简介
2021/04/13 Python