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使用rsa加密算法模块模拟新浪微博登录
Jan 22 Python
Django发送html邮件的方法
May 26 Python
Python基于lxml模块解析html获取页面内所有叶子节点xpath路径功能示例
May 16 Python
python实现windows壁纸定期更换功能
Jan 21 Python
谈谈Python中的while循环语句
Mar 10 Python
详解python 爬取12306验证码
May 10 Python
Django组件cookie与session的具体使用
Jun 05 Python
用Python从0开始实现一个中文拼音输入法的思路详解
Jul 20 Python
Python Tkinter模块 GUI 可视化实例
Nov 20 Python
Python reduce函数作用及实例解析
May 08 Python
python的reverse函数翻转结果为None的问题
May 11 Python
Python开发之QT解决无边框界面拖动卡屏问题(附带源码)
May 27 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的数组中提高元素查找与元素去重的效率的技巧解析
2016/03/03 PHP
PHP利用超级全局变量$_GET来接收表单数据的实例
2016/11/05 PHP
使用jQuery的将桌面应用程序引入浏览器
2010/11/19 Javascript
为JavaScript类型增加方法的实现代码(增加功能)
2011/12/29 Javascript
javascript实现滑动解锁功能
2014/12/31 Javascript
JavaScript检测鼠标移动方向的方法
2015/05/22 Javascript
javascript实现数组中的内容随机输出
2015/08/11 Javascript
javascript实现tab切换特效
2015/11/12 Javascript
JavaScript动态创建form表单并提交的实现方法
2015/12/10 Javascript
JS平滑无缝滚动效果的实现代码
2016/05/06 Javascript
原生js实现addclass,removeclass,toggleclasss实例
2016/11/24 Javascript
图片懒加载插件实例分享(含解析)
2017/01/09 Javascript
Node.js Mongodb 密码特殊字符 @的解决方法
2017/04/11 Javascript
vue2实现可复用的轮播图carousel组件详解
2017/11/27 Javascript
浅谈Angular HttpClient简单入门
2018/05/04 Javascript
详解解决小程序中webview页面多层history返回问题
2019/08/20 Javascript
实现vuex与组件data之间的数据同步更新方式
2019/11/12 Javascript
Javascript异步执行不按顺序解决方案
2020/04/30 Javascript
深入了解Vue.js 混入(mixins)
2020/07/23 Javascript
[03:06]2018年度CS GO最具人气解说-完美盛典
2018/12/16 DOTA
python调用新浪微博API项目实践
2014/07/28 Python
python之django母板页面的使用
2018/07/03 Python
python保存文件方法小结
2018/07/27 Python
对tensorflow中的strides参数使用详解
2020/01/04 Python
python类共享变量操作
2020/09/03 Python
瑞士灯具购物网站:Lampenwelt.ch
2018/07/08 全球购物
美国高档帽子网上商店:Hats.com
2018/08/09 全球购物
美国在线旅行社:Crystal Travel
2018/09/11 全球购物
即将毕业大学生自荐信
2014/01/24 职场文书
翻译学院毕业生自荐书
2014/02/02 职场文书
机电一体化专业求职信
2014/07/22 职场文书
党员目标管理责任书
2014/07/25 职场文书
委托书的写法
2014/08/30 职场文书
介绍信格式样本
2015/05/05 职场文书
Python包管理工具pip的15 个使用小技巧
2021/05/17 Python
Python OpenCV超详细讲解读取图像视频和网络摄像头
2022/04/02 Python