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转换字符串为摩尔斯电码的方法
Jul 06 Python
Python基础中所出现的异常报错总结
Nov 19 Python
Python正则抓取网易新闻的方法示例
Apr 21 Python
python实现上传下载文件功能
Nov 19 Python
python opencv检测目标颜色的实例讲解
Apr 02 Python
Python 读取图片文件为矩阵和保存矩阵为图片的方法
Apr 27 Python
对Python Class之间函数的调用关系详解
Jan 23 Python
python调用虹软2.0第三版的具体使用
Feb 22 Python
python图像处理入门(一)
Apr 04 Python
Tensorflow的常用矩阵生成方式
Jan 04 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
Feb 29 Python
Python实现Kerberos用户的增删改查操作
Dec 14 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数据库类
2009/05/27 PHP
ThinkPHP中U方法的使用浅析
2014/06/13 PHP
PHP中exec与system用法区别分析
2014/09/22 PHP
PHP 多任务秒级定时器的实现方法
2018/05/13 PHP
PHP用swoole+websocket和redis实现web一对一聊天
2019/11/05 PHP
在IE中调用javascript打开Excel的代码(downmoon原作)
2007/04/02 Javascript
提高网站信任度的技巧
2008/10/17 Javascript
js获取某月的最后一天日期的简单实例
2013/06/22 Javascript
js实现兼容IE和FF的上下层的移动
2015/05/04 Javascript
AngularJS实现全选反选功能
2015/12/08 Javascript
讲解JavaScript的Backbone.js框架的MVC结构设计理念
2016/02/14 Javascript
浅谈JavaScript对象的创建方式
2016/06/13 Javascript
BootStrap Datepicker 插件修改为默认中文的实现方法
2017/02/10 Javascript
jq checkbox 的全选并ajax传参的实例
2017/04/01 Javascript
在node中如何使用 ES6
2017/04/22 Javascript
JavaScript之filter_动力节点Java学院整理
2017/06/28 Javascript
获取本机IP地址的实例(JavaScript / Node.js)
2017/11/24 Javascript
JQuery实现table中tr上移下移的示例(超简单)
2018/01/08 jQuery
微信小程序dom操作的替代思路实例分析
2018/12/06 Javascript
mustache.js实现首页元件动态渲染的示例代码
2020/12/28 Javascript
简单介绍Python中的JSON模块
2015/04/08 Python
在Python程序中实现分布式进程的教程
2015/04/28 Python
Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法
2015/05/16 Python
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
2015/11/05 Python
Windows下搭建python开发环境详细步骤
2020/07/20 Python
浅谈django url请求与数据库连接池的共享问题
2019/08/29 Python
手把手教你进行Python虚拟环境配置教程
2020/02/03 Python
tensorflow对图像进行拼接的例子
2020/02/05 Python
纯HTML+CSS3制作导航菜单(附源码)
2013/04/24 HTML / CSS
移动端开发HTML5页面点击按钮后出现闪烁或黑色背景的解决办法
2018/09/19 HTML / CSS
秘鲁购物网站:Linio秘鲁
2017/04/07 全球购物
美国医生配方营养补充剂供应商:Healthy Directions
2019/07/10 全球购物
意向书范文
2014/03/31 职场文书
学校副校长四风对照检查材料整改措施
2014/09/25 职场文书
追悼会悼词大全
2015/06/23 职场文书
教你利用python实现企业微信发送消息
2021/05/23 Python