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 文件与目录操作
Dec 24 Python
pandas中Timestamp类用法详解
Dec 11 Python
numpy.random.seed()的使用实例解析
Feb 03 Python
python实现zabbix发送短信脚本
Sep 17 Python
django 将model转换为字典的方法示例
Oct 16 Python
python3实现mysql导出excel的方法
Jul 31 Python
通过python检测字符串的字母
Feb 18 Python
PHP基于phpqrcode类库生成二维码过程解析
May 28 Python
用Python开发app后端有优势吗
Jun 29 Python
彻底搞懂python 迭代器和生成器
Sep 07 Python
如何在Python3中使用telnetlib模块连接网络设备
Sep 21 Python
python Cartopy的基础使用详解
Nov 01 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
ThinkPHP页面跳转success与error方法概述
2014/06/25 PHP
PHP中的命名空间相关概念浅析
2015/01/22 PHP
php中文繁体和简体相互转换的方法
2015/03/21 PHP
jQuery中noconflict函数的实现原理分解
2015/02/03 Javascript
解决JS无法调用Controller问题的方法
2015/12/31 Javascript
Jquery对新插入的节点 绑定Click事件失效的解决方法
2016/06/02 Javascript
js 奇葩技巧之隐藏代码
2017/08/11 Javascript
JS多个表单数据提交下的serialize()应用实例分析
2019/08/27 Javascript
微信小程序 (地址选择1)--选取搜索地点并显示效果
2019/12/17 Javascript
JS简单表单验证功能完整示例
2020/01/26 Javascript
Python中获取对象信息的方法
2015/04/27 Python
使用url_helper简化Python中Django框架的url配置教程
2015/05/30 Python
ansible作为python模块库使用的方法实例
2017/01/17 Python
Python2.X/Python3.X中urllib库区别讲解
2017/12/19 Python
Python实现动态添加属性和方法操作示例
2018/07/25 Python
kaggle+mnist实现手写字体识别
2018/07/26 Python
如何用Python制作微信好友个性签名词云图
2019/06/28 Python
对tensorflow中的strides参数使用详解
2020/01/04 Python
Python多重继承之菱形继承的实例详解
2020/02/12 Python
Python threading.local代码实例及原理解析
2020/03/16 Python
django项目中新增app的2种实现方法
2020/04/01 Python
使用Filters滤镜弥补CSS3的跨浏览器问题以及兼容低版本IE
2013/01/23 HTML / CSS
用HTML5实现鼠标滚轮事件放大缩小图片的功能
2015/06/25 HTML / CSS
H5页面适配iPhoneX(就是那么简单)
2019/12/02 HTML / CSS
Perricone MD裴礼康美国官网:抗衰老护肤品
2016/09/26 全球购物
英国领先的维生素和营养补充剂直接供应商:Healthspan
2019/04/22 全球购物
美国家庭鞋店:Shoe Sensation
2019/09/27 全球购物
高中物理教学反思
2014/02/08 职场文书
金融事务专业毕业生求职信
2014/02/23 职场文书
运输服务质量承诺书
2014/03/27 职场文书
商务经理岗位职责
2014/08/03 职场文书
共产党员批评与自我批评
2014/10/15 职场文书
高中班主任评语
2014/12/30 职场文书
事业单位年度考核评语
2014/12/31 职场文书
部队2015年终工作总结
2015/04/02 职场文书
公司保密管理制度
2015/08/04 职场文书