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二分法实现实例
Nov 21 Python
简单的python后台管理程序
Apr 13 Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
Feb 24 Python
Python实现登陆文件验证方法
Oct 06 Python
python读出当前时间精度到秒的代码
Jul 05 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
Jul 15 Python
Python实现随机取一个矩阵数组的某几行
Nov 26 Python
Numpy与Pytorch 矩阵操作方式
Dec 27 Python
彻底搞懂 python 中文乱码问题(深入分析)
Feb 28 Python
Python request使用方法及问题总结
Apr 26 Python
浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点
Jun 08 Python
Python学习笔记之装饰器
Aug 06 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 截取中英文混合字符串的方法
2018/05/31 PHP
tp5(thinkPHP5框架)captcha验证码配置及验证操作示例
2019/05/28 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
PHP如何解决微信文章图片防盗链
2020/12/09 PHP
jQuery EasyUI API 中文文档 - MenuButton菜单按钮使用介绍
2011/10/06 Javascript
3款实用的在线JS代码工具(国外)
2012/03/15 Javascript
图片Slider 带左右按钮的js示例
2013/08/30 Javascript
常用的JavaScript模板引擎介绍
2015/02/28 Javascript
jquery实现从数组移除指定的值
2015/06/24 Javascript
如何屏蔽防止别的网站嵌入框架代码
2015/08/24 Javascript
深入理解jQuery事件绑定
2016/06/02 Javascript
Javascript点击其他任意地方隐藏关闭DIV实例
2016/06/21 Javascript
JS实现常见的查找、排序、去重算法示例
2018/05/21 Javascript
javascript系统时间设置操作示例
2019/06/17 Javascript
在layui下对元素进行事件绑定的实例
2019/09/06 Javascript
微信小程序实现页面浮动导航
2020/01/08 Javascript
[01:03]DOTA2新的征程 你的脚印值得踏上
2014/08/13 DOTA
python实现的重启关机程序实例
2014/08/21 Python
python实现在windows下操作word的方法
2015/04/28 Python
pycharm远程调试openstack的图文教程
2017/11/21 Python
Python定时任务工具之APScheduler使用方式
2019/07/24 Python
win10下python3.8的PIL库安装过程
2020/06/08 Python
使用canvas生成含有微信头像的邀请海报没有微信头像问题
2019/10/29 HTML / CSS
阿迪达斯意大利在线商店:adidas意大利
2016/09/19 全球购物
个人简历的自荐信
2013/10/23 职场文书
岗位竞聘演讲稿
2014/01/10 职场文书
厨师长岗位职责
2014/03/02 职场文书
财务简历的自我评价
2014/03/05 职场文书
电大奖学金获奖感言
2014/08/14 职场文书
作风大整顿心得体会
2014/09/10 职场文书
感恩教育观后感
2015/06/17 职场文书
css position fixed 左右双定位的实现代码
2021/04/29 HTML / CSS
Go语言基础切片的创建及初始化示例详解
2021/11/17 Golang
Python数据结构之队列详解
2022/03/21 Python
SQL语句中EXISTS的详细用法大全
2022/06/25 MySQL