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中的赋值、浅拷贝、深拷贝介绍
Mar 09 Python
JSON Web Tokens的实现原理
Apr 02 Python
python微信跳一跳游戏辅助代码解析
Jan 29 Python
python实现图书管理系统
Mar 12 Python
Python3正则匹配re.split,re.finditer及re.findall函数用法详解
Jun 11 Python
用pandas中的DataFrame时选取行或列的方法
Jul 11 Python
对python实时得到鼠标位置的示例讲解
Oct 14 Python
使用Python获取并处理IP的类型及格式方法
Nov 01 Python
pytorch实现特殊的Module--Sqeuential三种写法
Jan 15 Python
如何打包Python Web项目实现免安装一键启动的方法
May 21 Python
Python面向对象特殊属性及方法解析
Sep 16 Python
关于python中remove的一些坑小结
Jan 04 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导出生成word的方法
2015/12/25 PHP
PHP中explode函数和split函数的区别小结
2016/08/24 PHP
php版微信发红包接口用法示例
2016/09/23 PHP
Prototype 学习 工具函数学习($w,$F方法)
2009/07/12 Javascript
ASP 过滤数组重复数据函数(加强版)
2010/05/31 Javascript
JavaScript实现自动对页面上敏感词进行屏蔽的方法
2015/07/27 Javascript
javascript的几种继承方法介绍
2016/03/22 Javascript
js html css实现复选框全选与反选
2016/10/09 Javascript
JS三目运算(三元运算)方法详解
2017/03/01 Javascript
vue单页应用加百度统计代码(亲测有效)
2018/01/31 Javascript
Vue 页面跳转不用router-link的实现代码
2018/04/12 Javascript
解决vue中使用Axios调用接口时出现的ie数据处理问题
2018/08/13 Javascript
微信小程序整合使用富文本编辑器的方法详解
2019/04/25 Javascript
node运行js获得输出的三种方式示例详解
2020/07/02 Javascript
在vue中动态修改css其中一个属性值操作
2020/12/07 Vue.js
小程序中手机号识别的示例
2020/12/14 Javascript
[01:29:46]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第二局
2016/02/27 DOTA
[02:09]DOTA2辉夜杯 EHOME夺冠举杯现场
2015/12/28 DOTA
Python字符串拼接、截取及替换方法总结分析
2016/04/13 Python
python爬虫使用cookie登录详解
2017/12/27 Python
python实现飞机大战微信小游戏
2020/03/21 Python
Python关于excel和shp的使用在matplotlib
2019/01/03 Python
详解pandas的外部数据导入与常用方法
2019/05/01 Python
windows环境中利用celery实现简单任务队列过程解析
2019/11/29 Python
Pytorch 实现sobel算子的卷积操作详解
2020/01/10 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
2020/02/17 Python
通过一张图教会你CSS3倒影的实现
2017/09/26 HTML / CSS
HTML5实现应用程序缓存(Application Cache)
2020/06/16 HTML / CSS
英国顶级家庭折扣店:The Works
2017/09/06 全球购物
Clearly澳大利亚:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
Myprotein芬兰官网:欧洲第一运动营养品牌
2019/05/05 全球购物
如何判断一段程序是由C 编译程序还是由C++编译程序编译的
2013/08/04 面试题
2014年禁毒工作总结
2014/11/24 职场文书
mysql使用instr达到in(字符串)的效果
2022/04/03 MySQL
Python如何使用循环结构和分支结构
2022/04/13 Python
详解NumPy中的线性关系与数据修剪压缩
2022/05/25 Python