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 31 Python
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
Apr 18 Python
浅谈机器学习需要的了解的十大算法
Dec 15 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
Mar 27 Python
Python编程实现tail-n查看日志文件的方法
Jul 08 Python
使用Python和OpenCV检测图像中的物体并将物体裁剪下来
Oct 30 Python
复化梯形求积分实例——用Python进行数值计算
Nov 20 Python
pytorch 实现在一个优化器中设置多个网络参数的例子
Feb 20 Python
基于Python爬取爱奇艺资源过程解析
Mar 02 Python
django rest framework serializer返回时间自动格式化方法
Mar 31 Python
PyCharm 在Windows的有用快捷键详解
Apr 07 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
Apr 08 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通过记录IP来防止表单重复提交方法分析
2014/12/16 PHP
php文件压缩之PHPZip类用法实例
2015/06/18 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
2016/10/17 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
chrome不支持form.submit的解决方案
2015/04/28 Javascript
js实现滚动条滚动到某个位置便自动定位某个tr
2021/01/20 Javascript
Node.js的MongoDB驱动Mongoose基本使用教程
2016/03/01 Javascript
jQuery判断元素是否显示 是否隐藏的简单实现代码
2016/05/19 Javascript
javascript比较语义化版本号的实现代码
2016/09/09 Javascript
Angular2库初探
2017/03/01 Javascript
javascript数据结构之串的概念与用法分析
2017/04/12 Javascript
jQuery表单设置值的方法
2017/06/30 jQuery
解决Jquery下拉框数据动态获取的问题
2018/01/25 jQuery
深入剖析Node.js cluster模块
2018/05/23 Javascript
JS常见构造模式实例对比分析
2018/08/27 Javascript
jQuery zTree插件使用简单教程
2019/08/16 jQuery
[01:46]2020完美世界全国高校联赛秋季赛报名开启
2020/10/15 DOTA
pygame实现弹力球及其变速效果
2017/07/03 Python
Python3.5 + sklearn利用SVM自动识别字母验证码方法示例
2019/05/10 Python
python函数修饰符@的使用方法解析
2019/09/02 Python
pandas数据拼接的实现示例
2020/04/16 Python
Python使用Paramiko控制liunx第三方库
2020/05/20 Python
Python3爬虫mitmproxy的安装步骤
2020/07/29 Python
Python如何给你的程序做性能测试
2020/07/29 Python
python爬取豆瓣电影排行榜(requests)的示例代码
2021/02/18 Python
时尚的CSS3进度条效果
2012/02/22 HTML / CSS
法国奢华女性时尚配饰网上商店:Monnier Frères
2016/08/27 全球购物
泰国折扣酒店预订:Hotels2Thailand
2018/03/20 全球购物
Urban Outfitters德国官网:美国跨国生活方式零售公司
2018/05/21 全球购物
幼儿园开学家长寄语
2014/01/19 职场文书
你的创业计划书怎样才能打动风投
2014/02/06 职场文书
党员入党表决心的话
2014/03/11 职场文书
师德师风个人自我剖析材料
2014/09/27 职场文书
90条交通安全宣传标语
2019/10/12 职场文书
用python实现监控视频人数统计
2021/05/21 Python
html+css实现文字折叠特效实例
2021/06/02 HTML / CSS