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 相关文章推荐
使用IPython下的Net-SNMP来管理类UNIX系统的教程
Apr 15 Python
Python中利用原始套接字进行网络编程的示例
May 04 Python
Python的requests网络编程包使用教程
Jul 11 Python
Python requests发送post请求的一些疑点
May 20 Python
使用k8s部署Django项目的方法步骤
Jan 14 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
Jun 19 Python
python脚本开机自启的实现方法
Jun 28 Python
Pytorch 实现自定义参数层的例子
Aug 17 Python
Python 函数绘图及函数图像微分与积分
Nov 20 Python
Python使用type动态创建类操作示例
Feb 29 Python
keras中的History对象用法
Jun 19 Python
tensorflow 2.0模式下训练的模型转成 tf1.x 版本的pb模型实例
Jun 22 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
yii框架表单模型使用及以数组形式提交表单数据示例
2014/04/30 PHP
PHP用mb_string函数库处理与windows相关中文字符及Win环境下开启PHP Mb_String方法
2015/11/11 PHP
PHP实现文件上传与下载实例与总结
2016/03/13 PHP
php使用PDO获取结果集的方法
2017/02/16 PHP
PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】
2019/04/27 PHP
javascript IFrame 强制刷新代码
2009/07/23 Javascript
jquery 子窗口操作父窗口的代码
2009/09/21 Javascript
JavaScript在IE和Firefox浏览器下的7个差异兼容写法小结
2010/06/18 Javascript
javascript:void(0)是什么意思示例介绍
2013/11/17 Javascript
浅谈jquery回调函数callback的使用
2015/01/30 Javascript
jQuery的css() 方法使用指南
2015/05/03 Javascript
angular route中使用resolve在uglify压缩后问题解决
2016/09/21 Javascript
jQuery监听文件上传实现进度条效果的方法
2016/10/16 Javascript
javascript判断firebug是否开启的方法
2016/11/23 Javascript
Vue关于数据绑定出错解决办法
2017/05/15 Javascript
老生常谈js中的MVC
2017/07/25 Javascript
vue-router实现tab标签页(单页面)详解
2017/10/17 Javascript
javascript连接mysql与php通过odbc连接任意数据库的实例
2017/12/27 Javascript
vue和webpack项目构建过程常用的npm命令详解
2018/06/15 Javascript
element-ui table span-method(行合并)的实现代码
2018/12/20 Javascript
JS写滑稽笑脸运动效果
2020/05/28 Javascript
[30:37]【全国守擂赛】第三周擂主赛 Dark Knight vs. Leopard Gaming
2020/05/04 DOTA
Python生成器(Generator)详解
2015/04/13 Python
Python编程求解二叉树中和为某一值的路径代码示例
2018/01/04 Python
python flask中静态文件的管理方法
2018/03/20 Python
Python学习笔记之迭代器和生成器用法实例详解
2019/08/08 Python
Django自定义模板过滤器和标签的实现方法
2019/08/21 Python
纯CSS实现颜色渐变效果(包含环形渐变、线性渐变、彩虹效果等)
2014/05/07 HTML / CSS
有影响力的品牌之家:Our Social Collective
2019/06/08 全球购物
给男朋友的道歉信
2014/01/12 职场文书
推荐信模板
2014/05/09 职场文书
毕业生工作求职信
2014/06/30 职场文书
初级党校心得体会
2014/09/11 职场文书
入团介绍人意见范文
2015/06/04 职场文书
邓小平文选读书笔记
2015/06/29 职场文书
Python 视频画质增强
2022/04/28 Python