Python用UUID库生成唯一ID的方法示例


Posted in Python onDecember 15, 2016

UUID介绍

UUID是128位的全局唯一标识符,通常由32字节的字符串表示。它可以保证时间和空间的唯一性,也称为GUID,全称为:UUID —— Universally Unique IDentifier,Python 中叫 UUID。

它通过MAC地址、时间戳、命名空间、随机数、伪随机数来保证生成ID的唯一性。

UUID主要有五个算法,也就是五种方法来实现。

  1. uuid1()——基于时间戳。由MAC地址、当前时间戳、随机数生成。可以保证全球范围内的唯一性,但MAC的使用同时带来安全性问题,局域网中可以使用IP来代替MAC。
  2. uuid2()——基于分布式计算环境DCE(Python中没有这个函数)。算法与uuid1相同,不同的是把时间戳的前4位置换为POSIX的UID。实际中很少用到该方法。
  3. uuid3()——基于名字的MD5散列值。通过计算名字和命名空间的MD5散列值得到,保证了同一命名空间中不同名字的唯一性,和不同命名空间的唯一性,但同一命名空间的同一名字生成相同的uuid。
  4. uuid4()——基于随机数。由伪随机数得到,有一定的重复概率,该概率可以计算出来。
  5. uuid5()——基于名字的SHA-1散列值。算法与uuid3相同,不同的是使用 Secure Hash Algorithm 1 算法。

使用示例

#! coding:utf-8
import uuid
print u"uuid1 生成基于计算机主机ID和当前时间的UUID"
print uuid.uuid1() # UUID('a8098c1a-f86e-11da-bd1a-00112444be1e')

print u"\nuuid3 基于命名空间和一个字符的MD5加密的UUID"
print uuid.uuid3(uuid.NAMESPACE_DNS, 'python.org') #UUID('6fa459ea-ee8a-3ca4-894e-db77e160355e')

print u"\nuuid4 随机生成一个UUID"
print uuid.uuid4() #'16fd2706-8baf-433b-82eb-8c7fada847da'

print u"\nuuid5 基于命名空间和一个字符的SHA-1加密的UUID"
uuid.uuid5(uuid.NAMESPACE_DNS, 'python.org') #UUID('886313e1-3b8a-5372-9b90-0c9aee199e5d')

print u"\n根据十六进制字符生成UUID"
x = uuid.UUID('{00010203-0405-0607-0809-0a0b0c0d0e0f}')
print u"转换成十六进制的UUID表现字符"
print str(x) # '00010203-0405-0607-0809-0a0b0c0d0e0f'

结果

uuid1 生成基于计算机主机ID和当前时间的UUID
31a936a1-2339-11e6-8542-9cb70ded607f

uuid3 基于命名空间和一个字符的MD5加密的UUID
6fa459ea-ee8a-3ca4-894e-db77e160355e

uuid4 随机生成一个UUID
67e6497c-8aec-4413-9955-da86f38ff2d6

uuid5 基于命名空间和一个字符的SHA-1加密的UUID

根据十六进制字符生成UUID
转换成十六进制的UUID表现字符
00010203-0405-0607-0809-0a0b0c0d0e0f

总结

以上就是关于Python利用UUID库生成唯一ID的全部内容,希望本文的内容对大家学习或者使用python能有所帮助,如果有疑问大家可以留言交流。

Python 相关文章推荐
python调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
Aug 15 Python
Django的数据模型访问多对多键值的方法
Jul 21 Python
python+pygame简单画板实现代码实例
Dec 13 Python
教你利用Python玩转histogram直方图的五种方法
Jul 30 Python
PyQt QListWidget修改列表项item的行高方法
Jun 20 Python
python中字符串数组逆序排列方法总结
Jun 23 Python
pandas通过字典生成dataframe的方法步骤
Jul 23 Python
将Pytorch模型从CPU转换成GPU的实现方法
Aug 19 Python
使用python os模块复制文件到指定文件夹的方法
Aug 22 Python
pytorch中torch.max和Tensor.view函数用法详解
Jan 03 Python
python super函数使用方法详解
Feb 14 Python
Python实现加密的RAR文件解压的方法(密码已知)
Sep 11 Python
python常见的格式化输出小结
Dec 15 #Python
python中子类继承父类的__init__方法实例
Dec 15 #Python
利用Python中SocketServer 实现客户端与服务器间非阻塞通信
Dec 15 #Python
浅谈Python浅拷贝、深拷贝及引用机制
Dec 15 #Python
利用python获取某年中每个月的第一天和最后一天
Dec 15 #Python
python中快速进行多个字符替换的方法小结
Dec 15 #Python
Python制作简易注册登录系统
Dec 15 #Python
You might like
Yii2――使用数据库操作汇总(增删查改、事务)
2016/12/19 PHP
jQuery EasyUI 开源插件套装 完全替代ExtJS
2010/03/24 Javascript
Ajax同步与异步传输的示例代码
2013/11/21 Javascript
jQuery插件实现大图全屏图片相册
2015/03/14 Javascript
javascript实现根据3原色制作颜色选择器的方法
2015/07/17 Javascript
jquery带下拉菜单和焦点图代码分享
2015/08/24 Javascript
基于jQuery实现的扇形定时器附源码下载
2015/10/20 Javascript
谷歌showModalDialog()方法不兼容出现对话窗口的解决办法
2016/02/15 Javascript
JS中取二维数组中最大值的方法汇总
2016/04/17 Javascript
jQuery each函数源码分析
2016/05/25 Javascript
JavaScript实现阿拉伯数字和中文数字互相转换
2016/06/12 Javascript
js实现简单的碰壁反弹效果
2016/08/30 Javascript
JS禁止查看网页源代码的实现方法
2016/10/12 Javascript
vue.js 微信支付前端代码分享
2018/02/10 Javascript
[01:43]倾听DOTA2英雄之声 魅惑魔女国服配音鉴赏
2013/06/06 DOTA
Python的Django框架中从url中捕捉文本的方法
2015/07/20 Python
tensorflow入门之训练简单的神经网络方法
2018/02/26 Python
Python文件打开方式实例详解【a、a+、r+、w+区别】
2019/03/30 Python
python3 简单实现组合设计模式
2020/07/02 Python
利用Python pandas对Excel进行合并的方法示例
2020/11/04 Python
使用python tkinter开发一个爬取B站直播弹幕工具的实现代码
2021/02/07 Python
HTML5有哪些新特征
2015/12/01 HTML / CSS
html5 外链式实现加减乘除的代码
2019/09/04 HTML / CSS
中国宠物用品商城:E宠商城
2016/08/27 全球购物
Prototype是怎么扩展DOM的
2014/10/01 面试题
假日旅行社实习自我鉴定
2013/09/24 职场文书
网络工程师自荐书范文
2014/04/01 职场文书
新农村建设标语
2014/06/24 职场文书
教师节活动总结
2014/08/29 职场文书
教师党员学习十八届四中全会思想汇报
2014/11/03 职场文书
2014年大学生村官工作总结
2014/11/19 职场文书
邀请函范文
2015/02/02 职场文书
涪陵白鹤梁导游词
2015/02/09 职场文书
五一劳动节活动总结
2015/02/09 职场文书
爱心捐款活动总结
2015/05/09 职场文书
Nginx源码编译安装过程记录
2021/11/17 Servers