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正则表达式修复网站文章字体不统一的解决方法
Feb 21 Python
python基础教程之基本内置数据类型介绍
Feb 20 Python
使用paramiko远程执行命令、下发文件的实例
Oct 01 Python
python实现批量按比例缩放图片效果
Mar 30 Python
Python中实现变量赋值传递时的引用和拷贝方法
Apr 29 Python
解决Pycharm中import时无法识别自己写的程序方法
May 18 Python
python实现支付宝当面付(扫码支付)功能
May 30 Python
Flask框架URL管理操作示例【基于@app.route】
Jul 23 Python
如何利用Boost.Python实现Python C/C++混合编程详解
Nov 08 Python
对Python中创建进程的两种方式以及进程池详解
Jan 14 Python
python与C、C++混编的四种方式(小结)
Jul 15 Python
Python字符串三种格式化输出
Sep 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面向对象的方法重载两种版本比较
2008/09/08 PHP
PHP Session变量不能传送到下一页的解决方法
2009/11/27 PHP
PHP执行批量mysql语句的解决方法
2013/05/02 PHP
YII框架中搜索分页jQuery写法详解
2016/12/19 PHP
Mac下php 5升级到php 7的步骤详解
2017/04/26 PHP
Web层改进II-用xmlhttp 无声息提交复杂表单
2007/01/22 Javascript
js getBoundingClientRect() 来获取页面元素的位置
2010/11/25 Javascript
window.open不被拦截的实现代码
2012/08/22 Javascript
js中substr,substring,indexOf,lastIndexOf,split,replace的用法详解
2015/11/09 Javascript
深入浅析JavaScript中的作用域和上下文
2016/03/26 Javascript
基于JS实现类似支付宝支付密码输入框
2016/09/02 Javascript
jQuery  ready方法实现原理详解
2016/10/19 Javascript
JavaScript中闭包的详解
2017/04/01 Javascript
mac中利用NVM管理不同node版本的方法详解
2017/11/08 Javascript
Angular ng-animate和ng-cookies用法详解
2018/04/18 Javascript
vue中使用props传值的方法
2019/05/08 Javascript
ES6小技巧之代替lodash
2019/06/07 Javascript
Vue中keep-alive的两种应用方式
2020/07/15 Javascript
webpack+vue-cil 中proxyTable配置接口地址代理操作
2020/07/18 Javascript
微信小程序连续签到7天积分获得功能的示例代码
2020/08/20 Javascript
[52:44]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第一场 6.3
2018/06/04 DOTA
matplotlib savefig 保存图片大小的实例
2018/05/24 Python
PyQt+socket实现远程操作服务器的方法示例
2019/08/22 Python
Python pandas.DataFrame 找出有空值的行
2019/09/09 Python
pandas使用之宽表变窄表的实现
2020/04/12 Python
keras中的History对象用法
2020/06/19 Python
IE9对HTML5中部分属性不支持的原因分析
2014/10/15 HTML / CSS
国际性能运动服装品牌:Dare 2b
2018/07/27 全球购物
美国在线旅行社:Crystal Travel
2018/09/11 全球购物
介绍java中初始化块的使用
2012/09/11 面试题
毕业生毕业总结的自我评价范文
2013/11/02 职场文书
应届毕业生自我鉴定范文
2013/12/27 职场文书
安全标语口号
2014/06/09 职场文书
房产协议书范本
2014/10/18 职场文书
廉洁自律承诺书2015
2015/01/22 职场文书
小学体育队列队形教学反思
2016/02/16 职场文书