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导出数据到Excel可读取的CSV文件的方法
May 12 Python
python实现搜索本地文件信息写入文件的方法
Feb 22 Python
Python探索之ModelForm代码详解
Oct 26 Python
浅谈利用numpy对矩阵进行归一化处理的方法
Jul 11 Python
Python 硬币兑换问题
Jul 29 Python
python3正则模块re的使用方法详解
Feb 11 Python
Python 基于FIR实现Hilbert滤波器求信号包络详解
Feb 26 Python
jupyter notebook快速入门及使用详解
Nov 13 Python
python中threading和queue库实现多线程编程
Feb 06 Python
【超详细】八大排序算法的各项比较以及各自特点
Mar 31 Python
Python包argparse模块常用方法
Jun 04 Python
Python PIL按比例裁剪图片
May 11 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
百事可乐也出咖啡了 双倍咖啡因双倍快乐
2021/03/03 咖啡文化
模拟OICQ的实现思路和核心程序(一)
2006/10/09 PHP
php防止SQL注入详解及防范
2013/11/12 PHP
laravel 5.3 单用户登录简单实现方法
2019/10/14 PHP
javascript权威指南 学习笔记之变量作用域分享
2011/09/28 Javascript
jquery.Jwin.js 基于jquery的弹出层插件代码
2012/05/23 Javascript
Jquery创建一个层当鼠标移动到层上面不消失效果
2013/12/12 Javascript
微信小程序 自己制作小组件实例详解
2016/12/22 Javascript
Bootstrap select实现下拉框多选效果
2016/12/23 Javascript
react-router实现跳转传值的方法示例
2017/05/27 Javascript
用JS实现简单的登录验证功能
2017/07/28 Javascript
vue router demo详解
2017/10/13 Javascript
JS开发中基本数据类型具体有哪几种
2017/10/19 Javascript
VeeValidate 的使用场景以及配置详解
2019/01/11 Javascript
js实现GIF动图分解成多帧图片上传
2019/10/24 Javascript
Javascript Worker子线程代码实例
2020/02/20 Javascript
vue用ant design中table表格,点击某行时触发的事件操作
2020/10/28 Javascript
[52:20]VP vs VG Supermajor小组赛 B组胜者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
Python中用于返回绝对值的abs()方法
2015/05/14 Python
使用Python快乐学数学Github万星神器Manim简介
2019/08/07 Python
Django 设置多环境配置文件载入问题
2020/02/25 Python
微信小程序canvas实现水平、垂直居中效果
2020/02/05 HTML / CSS
Agoda台湾官网:国内外订房2折起
2018/03/20 全球购物
什么是触发器(trigger)? 触发器有什么作用?
2013/09/18 面试题
外贸公司实习自我鉴定
2013/09/24 职场文书
移动通信专业自荐信范文
2013/11/12 职场文书
编辑找工作求职信分享
2014/01/03 职场文书
青年创业培训欢迎词
2014/01/08 职场文书
学生会主席就职演讲稿
2014/01/14 职场文书
技校毕业生个人学习的自我评价
2014/02/21 职场文书
绿色城市实施方案
2014/03/19 职场文书
个人授权委托书
2014/09/15 职场文书
办护照工作证明
2014/10/01 职场文书
Windows11里微软已经将驱动程序安装位置A盘删除
2021/11/21 数码科技
SQL语法CONSTRAINT约束操作详情
2022/01/18 MySQL
《帝国时代4》赛季预告 新增内容编译器可创造地图
2022/04/03 其他游戏