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中getattr函数使用方法 getattr实现工厂模式
Jan 20 Python
浅谈Python程序与C++程序的联合使用
Apr 07 Python
python使用分治法实现求解最大值的方法
May 12 Python
Python下载懒人图库JavaScript特效
May 28 Python
玩转python爬虫之URLError异常处理
Feb 17 Python
一文总结学习Python的14张思维导图
Oct 17 Python
python实现生命游戏的示例代码(Game of Life)
Jan 24 Python
使用Python和xlwt向Excel文件中写入中文的实例
Apr 21 Python
python使用rpc框架gRPC的方法
Aug 24 Python
python交易记录链的实现过程详解
Jul 03 Python
Python高阶函数、常用内置函数用法实例分析
Dec 26 Python
Python获取excel内容及相关操作代码实例
Aug 10 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
DIY一个适配电脑声卡的动圈话筒放大器
2021/03/02 无线电
解析CI即CodeIgniter框架在Nginx下的重写规则
2013/06/03 PHP
php实现源代码加密的方法
2015/07/11 PHP
Yii2分页的使用及其扩展方法详解
2016/05/23 PHP
PHP类相关知识点实例总结
2016/09/28 PHP
javascript 表格排序和表头浮动效果(扩展SortTable)
2009/04/07 Javascript
Javascript 函数中的参数使用分析
2010/03/27 Javascript
jQuery Validation插件remote验证方式的Bug解决
2010/07/01 Javascript
Javascript脚本实现静态网页加密实例代码
2013/11/05 Javascript
jQuery 无刷新分页实例代码
2013/11/12 Javascript
DOM基础教程之模型中的模型节点
2015/01/19 Javascript
简介JavaScript中toTimeString()方法的使用
2015/06/12 Javascript
JavaScript的removeChild()函数用法详解
2015/12/27 Javascript
浅谈webpack打包过程中因为图片的路径导致的问题
2018/02/21 Javascript
layui 优化button按钮和弹出框的方法
2018/08/15 Javascript
Vue绑定内联样式问题
2018/10/17 Javascript
微信小程序实现卡片层叠滑动效果
2019/06/21 Javascript
js实现直播点击飘心效果
2020/08/19 Javascript
js面向对象封装级联下拉菜单列表的实现步骤
2021/02/08 Javascript
[43:32]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS NewBee第一场
2014/05/26 DOTA
[00:44]TI7不朽珍藏III——军团指挥官不朽展示
2017/07/15 DOTA
python中__call__方法示例分析
2014/10/11 Python
python动态参数用法实例分析
2015/05/25 Python
利用Python如何生成hash值示例详解
2017/12/20 Python
python中不能连接超时的问题及解决方法
2018/06/10 Python
python可视化爬虫界面之天气查询
2019/07/03 Python
python-图片流传输的思路及示例(url转换二维码)
2020/12/21 Python
纯CSS实现右侧底部悬浮效果(悬浮QQ、微信、微博、邮箱等联系方式)
2015/04/24 HTML / CSS
荷兰鞋子在线:Nelson Schoenen
2017/12/25 全球购物
护士岗前培训自我评鉴
2014/02/28 职场文书
高中生旷课检讨书
2014/10/08 职场文书
公司开会通知
2015/04/20 职场文书
新娘父亲婚礼致辞
2015/07/27 职场文书
Ajax请求超时与网络异常处理图文详解
2021/05/23 Javascript
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL
python高温预警数据获取实例
2022/07/23 Python