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 27 Python
使用python遍历指定城市的一周气温
Mar 31 Python
解决python读取几千万行的大表内存问题
Jun 26 Python
解决python写入带有中文的字符到文件错误的问题
Jan 31 Python
Python 利用切片从列表中取出一部分使用的方法
Feb 01 Python
在python中将list分段并保存为array类型的方法
Jul 15 Python
Django CBV类的用法详解
Jul 26 Python
详解Matplotlib绘图之属性设置
Aug 23 Python
pytest中文文档之编写断言
Sep 12 Python
python读取mysql数据绘制条形图
Mar 25 Python
Python3 selenium 实现QQ群接龙自动化功能
Apr 17 Python
Python实现扫码工具的示例代码
Oct 09 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 mssql 分页SQL语句优化 持续影响
2009/04/26 PHP
php5.3 废弃函数小结
2010/05/16 PHP
php 如何获取数组第一个值
2013/08/06 PHP
Symfony的安装和配置方法
2016/03/17 PHP
php常用字符串String函数实例总结【转换,替换,计算,截取,加密】
2016/12/07 PHP
laravel 自定义常量的两种方案
2019/10/14 PHP
jQuery 使用手册(四)
2009/09/23 Javascript
javaScript 删除字符串空格多种方法小结
2012/10/24 Javascript
js实现拉伸拖动iframe的具体代码
2013/08/03 Javascript
Extjs3.0 checkboxGroup 动态添加item实现思路
2013/08/14 Javascript
Javascript selection的兼容性写法介绍
2013/12/20 Javascript
jquery实现倒计时代码分享
2014/06/13 Javascript
jQuery插件bgStretcher.js实现全屏背景特效
2015/06/05 Javascript
自己动手写的jquery分页控件(非常简单实用)
2015/10/28 Javascript
微信开发之调起摄像头、本地展示图片、上传下载图片实例
2016/12/08 Javascript
在点击div中的p时,如何阻止事件冒泡
2017/02/07 Javascript
解决ie img标签内存泄漏的问题
2017/10/13 Javascript
node.js基于fs模块对系统文件及目录进行读写操作的方法详解
2017/11/10 Javascript
从0到1构建vueSSR项目之路由的构建
2019/03/07 Javascript
js中数组常用方法总结(推荐)
2019/04/09 Javascript
一次让你了解全部JavaScript的作用域
2019/06/24 Javascript
layUI实现列表查询功能
2019/07/27 Javascript
JavaScript实现音乐导航效果
2020/11/19 Javascript
Python实现连接两个无规则列表后删除重复元素并升序排序的方法
2018/02/05 Python
Python爬虫动态ip代理防止被封的方法
2019/07/07 Python
Pytho爬虫中Requests设置请求头Headers的方法
2020/09/22 Python
详解window.open被浏览器拦截的解决方案
2019/07/18 HTML / CSS
Hotels.com香港酒店网:你的自由行酒店订房专家
2018/01/22 全球购物
西班牙美妆电商:Perfume’s Club(有中文站)
2018/08/08 全球购物
Halston Heritage官网:简洁的日装,稍显奢华的晚装
2018/11/20 全球购物
英国领先的在线礼品店:Getting Personal
2019/09/24 全球购物
师范生个人推荐信
2013/11/29 职场文书
党员学习群众路线教育实践活动对照检查材料
2014/09/23 职场文书
2014年统计工作总结
2014/11/21 职场文书
小学教师岗位职责
2015/04/02 职场文书
学习师德师风的心得体会(2篇)
2019/10/08 职场文书