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之关于类的初步认识
Oct 11 Python
Python内置的HTTP协议服务器SimpleHTTPServer使用指南
Mar 30 Python
Python实现批量检测HTTP服务的状态
Oct 27 Python
Python守护线程用法实例
Jun 23 Python
Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)
Apr 30 Python
对python实现模板生成脚本的方法详解
Jan 30 Python
Python生成验证码、计算具体日期是一年中的第几天实例代码详解
Oct 16 Python
Python Pillow.Image 图像保存和参数选择方式
Jan 09 Python
完美解决Django2.0中models下的ForeignKey()问题
May 19 Python
如何利用Python识别图片中的文字
May 31 Python
Python中正则表达式对单个字符,多个字符和匹配边界等使用
Jan 27 Python
深入理解Pytorch微调torchvision模型
Nov 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
PHP扩展编写点滴 技巧收集
2010/03/09 PHP
php调用google接口生成二维码示例
2014/04/28 PHP
php中单个数据库字段多列显示(单字段分页、横向输出)
2014/07/28 PHP
php中session定期自动清理的方法
2015/11/12 PHP
在PHP语言中使用JSON和将json还原成数组的方法
2016/07/19 PHP
php连接sftp的作用以及实例代码
2019/09/23 PHP
详解将数据从Laravel传送到vue的四种方式
2019/10/16 PHP
PHP设计模式(八)装饰器模式Decorator实例详解【结构型】
2020/05/02 PHP
用js实现上传图片前的预览(TX的面试题)
2007/08/14 Javascript
JavaScript读取中文cookie时的乱码问题的解决方法
2009/10/14 Javascript
jQuery对象数据缓存Cache原理及jQuery.data方法区别介绍
2013/04/07 Javascript
jquery为页面增加快捷键示例
2014/01/31 Javascript
关于javaScript注册click事件传递参数的不成功问题
2014/07/18 Javascript
Javascript基础教程之for循环
2015/01/18 Javascript
node.js中的forEach()是同步还是异步呢
2015/01/29 Javascript
jQuery插件实现静态HTML验证码校验
2015/11/06 Javascript
基于Jquery和html5的7款个性化地图插件
2015/11/17 Javascript
浅谈Vue.js 组件中的v-on绑定自定义事件理解
2017/11/17 Javascript
vue.js 实现输入框动态添加功能
2018/06/25 Javascript
JavaScript实现10秒后再次获取验证码
2020/12/02 Javascript
Python单元测试框架unittest简明使用实例
2015/04/13 Python
python 信息同时输出到控制台与文件的实例讲解
2018/05/11 Python
python筛选出两个文件中重复行的方法
2018/05/31 Python
win10 64bit下python NLTK安装教程
2018/09/19 Python
关于PyTorch 自动求导机制详解
2019/08/18 Python
如何在django中运行scrapy框架
2020/04/22 Python
利用python实现汉诺塔游戏
2021/03/01 Python
解决CSS3的opacity属性带来的层叠顺序问题
2016/05/09 HTML / CSS
巴西一家专门从事家居和装饰的连锁店:Camicado
2019/08/14 全球购物
新闻专业个人自我评价
2013/09/21 职场文书
领导证婚人证婚词
2014/01/13 职场文书
驾驶员安全责任协议书
2016/03/22 职场文书
2019年圣诞节祝福语集锦
2019/12/25 职场文书
分享五个Node.js开发的优秀实践 
2022/04/07 NodeJs
golang连接MySQl使用sqlx库
2022/04/14 Golang
彻底弄懂Python中的回调函数(callback)
2022/06/25 Python