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基础教程之简单入门说明(变量和控制语言使用方法)
Mar 25 Python
Python实现抓取网页并且解析的实例
Sep 20 Python
python使用socket向客户端发送数据的方法
Apr 29 Python
python模块之time模块(实例讲解)
Sep 13 Python
python django使用haystack:全文检索的框架(实例讲解)
Sep 27 Python
python实现排序算法解析
Sep 08 Python
pygame游戏之旅 python和pygame安装教程
Nov 20 Python
解决python写入带有中文的字符到文件错误的问题
Jan 31 Python
python中用logging实现日志滚动和过期日志删除功能
Aug 20 Python
关于python中的xpath解析定位
Mar 06 Python
基于PyQT实现区分左键双击和单击
May 19 Python
django教程如何自学
Jul 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
php下mysql数据库操作类(改自discuz)
2010/07/03 PHP
1亿条数据如何分表100张到Mysql数据库中(PHP)
2015/07/29 PHP
js实现上传图片之上传前预览图片
2013/03/25 Javascript
js字符串转换成xml对象并使用技巧解读
2013/04/18 Javascript
封装html的select标签的js操作实例
2013/07/02 Javascript
JS正则验证邮箱的格式详细介绍
2013/11/19 Javascript
ECMAScript6的新特性箭头函数(Arrow Function)详细介绍
2014/06/07 Javascript
一个获取第n个元素节点的js函数
2014/09/02 Javascript
实例代码讲解jquery easyui动态tab页
2015/11/17 Javascript
Angularjs material 实现搜索框功能
2016/03/08 Javascript
深入理解JavaScript中的call、apply、bind方法的区别
2016/05/30 Javascript
iOS和Android用同一个二维码实现跳转下载链接的方法
2016/09/28 Javascript
jQuery EasyUI 右键菜单--关闭标签/选项卡的简单实例
2016/10/10 Javascript
防止页面url缓存中ajax中post请求的处理方法
2017/10/10 Javascript
vue使用ajax获取后台数据进行显示的示例
2018/08/09 Javascript
Vue实现表格中对数据进行转换、处理的方法
2018/09/06 Javascript
Element-UI中Upload上传文件前端缓存处理示例
2019/02/21 Javascript
javascript实现日历效果
2019/06/17 Javascript
vue 实现input表单元素的disabled示例
2019/10/28 Javascript
解决Vue的项目使用Element ui 走马灯无法实现的问题
2020/08/03 Javascript
python进程管理工具supervisor的安装与使用教程
2017/09/05 Python
python自动化报告的输出用例详解
2018/05/30 Python
Python设计模式之迭代器模式原理与用法实例分析
2019/01/10 Python
Flask框架请求钩子与request请求对象用法实例分析
2019/11/07 Python
Python 限定函数参数的类型及默认值方式
2019/12/24 Python
基于Tensorflow批量数据的输入实现方式
2020/02/05 Python
python如何解析复杂sql,实现数据库和表的提取的实例剖析
2020/05/15 Python
完美解决keras保存好的model不能成功加载问题
2020/06/11 Python
Pycharm中使用git进行合作开发的教程详解
2020/11/17 Python
HTML5中的postMessage API基本使用教程
2016/05/20 HTML / CSS
Booking.com德国:预订最好的酒店和住宿
2020/02/16 全球购物
4s店机修工岗位职责
2013/12/20 职场文书
30年同学聚会感言
2014/01/30 职场文书
主管竞聘书范文
2014/03/31 职场文书
幼儿园辞职信
2015/05/13 职场文书
使用nginx动态转换图片大小生成缩略图
2021/03/31 Servers