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 (1)
Oct 31 Python
python多线程编程方式分析示例详解
Dec 06 Python
Python多线程和队列操作实例
Jun 21 Python
Python解决N阶台阶走法问题的方法分析
Dec 28 Python
Python操作MongoDB数据库的方法示例
Jan 04 Python
利用arcgis的python读取要素的X,Y方法
Dec 22 Python
Python3中_(下划线)和__(双下划线)的用途和区别
Apr 26 Python
python 抓包保存为pcap文件并解析的实例
Jul 23 Python
使用python脚本自动创建pip.ini配置文件代码实例
Sep 20 Python
Django 实现 Websocket 广播、点对点发送消息的代码
Jun 03 Python
基于python获取本地时间并转换时间戳和日期格式
Oct 27 Python
python中判断数字是否为质数的实例讲解
Dec 06 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
IIS下配置Php+Mysql+zend的图文教程
2006/12/08 PHP
js 得到文件后缀(通过正则实现)
2013/07/08 Javascript
jqgrid 编辑添加功能详细解析
2013/11/08 Javascript
将字符串中由空格隔开的每个单词首字母大写
2014/04/06 Javascript
页面内容排序插件jSort使用方法
2015/10/10 Javascript
javascript类型系统 Array对象学习笔记
2016/01/09 Javascript
EasyUI布局 高度自适应
2016/06/04 Javascript
AngularJS基础 ng-readonly 指令简单示例
2016/08/02 Javascript
jQuery ready()和onload的加载耗时分析
2016/09/08 Javascript
Bootstrap输入框组件简单实现代码
2017/03/06 Javascript
vue.js实现单选框、复选框和下拉框示例
2017/07/18 Javascript
Node.js 基础教程之全局对象
2017/08/06 Javascript
解决修复npm安装全局模块权限的问题
2018/05/17 Javascript
Nuxt.js实现校验访问浏览器类型的中间件
2018/08/24 Javascript
小程序如何使用分包加载的实现方法
2019/05/22 Javascript
Vue 嵌套路由使用总结(推荐)
2020/01/13 Javascript
详细分析Node.js 模块系统
2020/06/28 Javascript
Vuejs通过拖动改变元素宽度实现自适应
2020/09/02 Javascript
解决vue elementUI 使用el-select 时 change事件的触发问题
2020/11/17 Vue.js
Django中对数据查询结果进行排序的方法
2015/07/17 Python
python3 模拟登录v2ex实例讲解
2017/07/13 Python
Python实现图片滑动式验证识别方法
2017/11/09 Python
Python访问MongoDB,并且转换成Dataframe的方法
2018/10/15 Python
python实现五子棋小游戏
2020/03/25 Python
python3 webp转gif格式的实现示例
2019/12/10 Python
html5中localStorage本地存储的简单使用
2017/06/16 HTML / CSS
家庭户外服装:Hawkshead
2017/11/02 全球购物
Furla官网:意大利著名的皮革品牌
2019/08/06 全球购物
《燕子专列》教学反思
2014/02/21 职场文书
社区科普工作方案
2014/06/03 职场文书
技术负责人任命书
2014/06/05 职场文书
好的促销活动方案
2014/08/21 职场文书
中小学生安全教育观后感
2015/06/17 职场文书
中学音乐课教学反思
2016/02/18 职场文书
postman中form-data、x-www-form-urlencoded、raw、binary的区别介绍
2022/01/18 HTML / CSS
JavaScript实现两个数组的交集
2022/03/25 Javascript