Python使用uuid库生成唯一标识ID


Posted in Python onFebruary 12, 2020

uuid是128位的全局唯一标识符(univeral unique identifier),通常用32位的一个字符串的形式来表现。有时也称guid(global

unique identifier)。python中自带了uuid模块来进行uuid的生成和管理工作。

python中的uuid模块基于信息如MAC地址、时间戳、命名空间、随机数、伪随机数来uuid。具体方法有如下几个:

uuid.uuid1()

基于MAC地址,时间戳,随机数来生成唯一的uuid,可以保证全球范围内的唯一性。

uuid.uuid2()

算法与uuid1相同,不同的是把时间戳的前4位置换为POSIX的UID。不过需要注意的是python中没有基于DCE的算法,所以python的uuid模块中没有uuid2这个方法。

uuid.uuid3(namespace,name)

通过计算一个命名空间和名字的md5散列值来给出一个uuid,所以可以保证命名空间中的不同名字具有不同的uuid,但是相同的名字就是相同的uuid了。【感谢评论区大佬指出】namespace并不是一个自己手动指定的字符串或其他量,而是在uuid模块中本身给出的一些值。比如uuid.NAMESPACE_DNS,uuid.NAMESPACE_OID,uuid.NAMESPACE_OID这些值。这些值本身也是UUID对象,根据一定的规则计算得出。

uuid.uuid4()

通过伪随机数得到uuid,是有一定概率重复的

uuid.uuid5(namespace,name)

和uuid3基本相同,只不过采用的散列算法是sha1

一般而言,在对uuid的需求不是很复杂的时候,uuid1方法就已经够用了,使用方法如下:

#coding=utf-8
 
import uuid
 
name = 'test_name'
# namespace = 'test_namespace'
namespace = uuid.NAMESPACE_URL
 
print uuid.uuid1()
print uuid.uuid3(namespace,name)
print uuid.uuid4()

以下是python官方提供的参考示例

>>> import uuid
>>> # make a UUID based on the host ID and current time
>>> uuid.uuid1()
UUID('a8098c1a-f86e-11da-bd1a-00112444be1e')
>>> # make a UUID using an MD5 hash of a namespace UUID and a name
>>> uuid.uuid3(uuid.NAMESPACE_DNS, 'python.org')
UUID('6fa459ea-ee8a-3ca4-894e-db77e160355e')
>>> # make a random UUID
>>> uuid.uuid4()
UUID('16fd2706-8baf-433b-82eb-8c7fada847da')
>>> # make a UUID using a SHA-1 hash of a namespace UUID and a name
>>> uuid.uuid5(uuid.NAMESPACE_DNS, 'python.org')
UUID('886313e1-3b8a-5372-9b90-0c9aee199e5d')

生成 32 位哈希值

uuid.uuid4().hex
Out[3]: 
'28128f59692242b2854ece961ea1dd35'

更多关于Python使用uuid库生成唯一标识ID的文章大家可以点击下面的相关链接

Python 相关文章推荐
零基础写python爬虫之爬虫编写全记录
Nov 06 Python
Python实现删除文件中含“指定内容”的行示例
Jun 09 Python
python使用opencv读取图片的实例
Aug 17 Python
python通过百度地图API获取某地址的经纬度详解
Jan 28 Python
Python利用pandas计算多个CSV文件数据值的实例
Apr 19 Python
pandas获取groupby分组里最大值所在的行方法
Apr 20 Python
解决python 无法加载downsample模型的问题
Oct 25 Python
python实现键盘控制鼠标移动
Nov 27 Python
python单向循环链表原理与实现方法示例
Dec 03 Python
python 制作简单的音乐播放器
Nov 25 Python
Python OpenCV超详细讲解读取图像视频和网络摄像头
Apr 02 Python
Python中的socket网络模块介绍
Jul 23 Python
将python文件打包exe独立运行程序方法详解
Feb 12 #Python
Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解
Feb 12 #Python
Python sep参数使用方法详解
Feb 12 #Python
Python多重继承之菱形继承的实例详解
Feb 12 #Python
Python实现桌面翻译工具【新手必学】
Feb 12 #Python
PyCharm无法引用自身项目解决方式
Feb 12 #Python
pycharm不能运行.py文件的解决方法
Feb 12 #Python
You might like
收音机鉴频器对声音的影响和频偏分析
2021/03/02 无线电
phpmyadmin的#1251问题
2006/11/25 PHP
让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享
2011/08/08 PHP
PHP 通过Socket收发十六进制数据的实现代码
2013/08/16 PHP
php图片缩放实现方法
2014/02/20 PHP
适用于抽奖程序、随机广告的PHP概率算法实例
2014/04/09 PHP
使用php方法curl抓取AJAX异步内容思路分析及代码分享
2014/08/25 PHP
深入理解PHP内核(二)之SAPI探究
2015/11/10 PHP
PHP 读取大文件并显示的简单实例(推荐)
2016/08/12 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
使用基于jquery的gamequery插件做JS乒乓球游戏
2011/07/31 Javascript
jQuery可见性过滤器:hidden和:visibility用法实例
2015/06/24 Javascript
javascript控制台详解
2015/06/25 Javascript
jQuery实现tab选项卡效果的方法
2015/07/08 Javascript
jQuery的事件委托实例分析
2015/07/15 Javascript
对layui中表单元素的使用详解
2018/08/15 Javascript
《javascript设计模式》学习笔记三:Javascript面向对象程序设计单例模式原理与实现方法分析
2020/04/07 Javascript
使用Vue+Django+Ant Design做一个留言评论模块的示例代码
2020/06/01 Javascript
ES6字符串的扩展实例
2020/12/21 Javascript
[26:21]浴火之凤-TI4世界冠军Newbee战队纪录片
2014/08/07 DOTA
[31:47]夜魇凡尔赛茶话会 第三期01:选手知多少
2021/03/11 DOTA
Python 内置函数complex详解
2016/10/23 Python
利用Python中的pandas库对cdn日志进行分析详解
2017/03/07 Python
python中的二维列表实例详解
2018/06/19 Python
Python封装原理与实现方法详解
2018/08/28 Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
2020/02/04 Python
python 使用递归回溯完美解决八皇后的问题
2020/02/26 Python
牵手50香港:专为黄金岁月的单身人士而设的交友网站
2020/08/14 全球购物
师范生教师实习自我鉴定
2013/09/27 职场文书
企业车辆管理制度
2014/01/24 职场文书
中职生求职信
2014/07/01 职场文书
工作态度不好检讨书
2015/05/06 职场文书
财务人员廉洁自律心得体会
2016/01/13 职场文书
2016年公共机构节能宣传周活动总结
2016/04/05 职场文书
我的收音机情缘
2022/04/05 无线电
nginx 配置缓存
2022/05/11 Servers