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运算符重载用法实例分析
Jun 01 Python
Python文件操作,open读写文件,追加文本内容实例
Dec 14 Python
Python_LDA实现方法详解
Oct 25 Python
基于python实现名片管理系统
Nov 30 Python
python paramiko利用sftp上传目录到远程的实例
Jan 03 Python
Python3的高阶函数map,reduce,filter的示例详解
Jul 23 Python
Python 写入训练日志文件并控制台输出解析
Aug 13 Python
pytorch中tensor.expand()和tensor.expand_as()函数详解
Dec 27 Python
linux 下python多线程递归复制文件夹及文件夹中的文件
Jan 02 Python
tensorflow-gpu安装的常见问题及解决方案
Jan 20 Python
Python selenium爬取微博数据代码实例
May 22 Python
浅析python函数式编程
Sep 26 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/10/09 PHP
php多种形式发送邮件(mail qmail邮件系统 phpmailer类)
2014/01/22 PHP
MongoDB在PHP中的常用操作小结
2014/02/20 PHP
php实现事件监听与触发的方法
2014/11/21 PHP
typecho插件编写教程(五):核心代码
2015/05/28 PHP
PHP截取IE浏览器并缩小原图的方法
2016/03/04 PHP
PHP入门教程之上传文件实例详解
2016/09/11 PHP
php中get_magic_quotes_gpc()函数说明
2017/02/06 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
2019/10/11 PHP
jQuery fadeTo方法调整图片的透明度使用介绍
2013/05/06 Javascript
javascript中负数算术右移、逻辑右移的奥秘探索
2013/10/17 Javascript
innerHTML属性,outerHTML属性,textContent属性,innerText属性区别详解
2015/03/13 Javascript
解决jQuery uploadify在非IE核心浏览器下无法上传
2015/08/05 Javascript
微信小程序 教程之wxapp 视图容器 view
2016/10/19 Javascript
js实现符合国情的日期插件详解
2017/01/19 Javascript
vue.js2.0点击获取自己的属性和jquery方法
2018/02/23 jQuery
详解vue-cli脚手架中webpack配置方法
2018/08/22 Javascript
Vue.js特性Scoped Slots的浅析
2019/02/20 Javascript
谈谈IntersectionObserver懒加载的具体使用
2019/10/15 Javascript
Javascript Web Worker使用过程解析
2020/03/16 Javascript
JS实现audio音频剪裁剪切复制播放与上传(步骤详解)
2020/07/28 Javascript
js实现特别简单的钟表效果
2020/09/14 Javascript
Python线程指南分享
2019/11/19 Python
Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的
2020/04/20 Python
python redis存入字典序列化存储教程
2020/07/16 Python
python 实现表情识别
2020/11/21 Python
Django中日期时间型字段进行年月日时分秒分组统计
2020/11/27 Python
css和css3弹性盒模型实现元素宽度(高度)自适应
2019/05/15 HTML / CSS
NFL加拿大官方网上商店:NHLShop.ca
2019/03/12 全球购物
Dodax奥地利:音乐、电影、书籍、玩具、电子产品等
2019/08/31 全球购物
管道维修工岗位职责
2013/12/27 职场文书
入党积极分子自我鉴定
2014/02/18 职场文书
七匹狼男装广告词
2014/03/21 职场文书
材料采购员岗位职责
2015/04/03 职场文书
2015年中秋晚会主持词
2015/07/01 职场文书
比较node.js和Deno
2021/04/27 Javascript