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制作检测Linux运行信息的工具的教程
Apr 01 Python
用实例详解Python中的Django框架中prefetch_related()函数对数据库查询的优化
Apr 01 Python
Python调用SQLPlus来操作和解析Oracle数据库的方法
Apr 09 Python
基于python中staticmethod和classmethod的区别(详解)
Oct 24 Python
python print输出延时,让其立刻输出的方法
Jan 07 Python
Python将字符串常量转化为变量方法总结
Mar 17 Python
Python大数据之使用lxml库解析html网页文件示例
Nov 16 Python
基于python检查矩阵计算结果
May 21 Python
Pytorch框架实现mnist手写库识别(与tensorflow对比)
Jul 20 Python
pandas实现导出数据的四种方式
Dec 13 Python
Pandas中DataFrame交换列顺序的方法实现
Dec 14 Python
pytorch 权重weight 与 梯度grad 可视化操作
Jun 05 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根据传来的16进制颜色代码自动改变背景颜色
2014/06/13 PHP
PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
2014/09/29 PHP
PHP简单读取PDF页数的实现方法
2016/07/21 PHP
PHP插件PHPMailer发送邮件功能
2017/02/28 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
PHP $O00OO0=urldecode & eval 解密,记一次商业源码的去后门
2020/09/13 PHP
javascript通过navigator.userAgent识别各种浏览器
2013/10/25 Javascript
sliderToggle在写jquery的计时器setTimeouter中不生效
2014/05/26 Javascript
nodejs分页类代码分享
2014/06/17 NodeJs
easyUI combobox实现联动效果
2017/01/17 Javascript
JS在浏览器中解析Base64编码图像
2017/02/09 Javascript
Vue组件创建和传值的方法
2018/08/17 Javascript
vue 界面刷新数据被清除 localStorage的使用详解
2018/09/16 Javascript
js防抖和节流的深入讲解
2018/12/06 Javascript
vue中提示$index is not defined错误的解决方式
2020/09/02 Javascript
Python中字符编码简介、方法及使用建议
2015/01/08 Python
python实现文件路径和url相互转换的方法
2015/07/06 Python
python 中值滤波,椒盐去噪,图片增强实例
2019/12/18 Python
python 实现 hive中类似 lateral view explode的功能示例
2020/05/18 Python
聊聊python中的循环遍历
2020/09/07 Python
matplotlib bar()实现多组数据并列柱状图通用简便创建方法
2021/02/24 Python
纯DOM+CSS3实现简单的小风车动画
2016/09/27 HTML / CSS
W Concept美国:精选全球独立设计师
2017/02/22 全球购物
美国电子元器件分销商:Newark element14
2018/01/13 全球购物
波兰快递服务:Globkurier.pl
2019/11/08 全球购物
营销总经理岗位职责
2014/02/02 职场文书
大学生自我评价范文分享
2014/02/21 职场文书
元旦联欢会感言
2014/03/04 职场文书
《飞向蓝天的恐龙》教学反思
2014/04/09 职场文书
副处级干部考察材料
2014/05/17 职场文书
社会实践的活动方案
2014/08/22 职场文书
社区党员群众路线教育实践活动心得体会
2014/11/03 职场文书
工作失职检讨书
2015/01/26 职场文书
社区三八妇女节活动总结
2015/02/06 职场文书
2015年班干部工作总结
2015/04/29 职场文书
导游词之山海关
2019/12/10 职场文书