python生成并处理uuid的实现方式


Posted in Python onMarch 03, 2020

UUID(Universally Unique Identifier)是通用唯一识别码,在许多领域用作标识,比如我们常用的数据库也可以用它来作为主键,原理上它是可以对任何东西进行唯一的编码的。

作为新手一看到类似varchar(40)这样的主键就觉得有点蒙圈了,字符串型也不能自增啊,这里就应该应用UUID了。

数据库一般都有自己的办法生成UUID,但虽然可以用,但这玩意考虑到可读性和有点坑的长度还是尽量不要用这玩意做主键···咳,有点跑题···

下面就简单说明一下python是如何生成UUID的:

python有一个模块叫做uuid,导入它就可以使用它的四个方法了。注意这四个方法依次是uuid1(),uuid3(),uuid4(),uuid5(),

然而并没有uuid2()。

# -*- coding:utf-8 -*-
import uuid
 
print uuid.uuid1()
#bf1dfacf-67d8-11e8-9a23-408d5c985711
print uuid.uuid3(uuid.NAMESPACE_DNS, 'yuanlin')
#ddb366f5-d4bc-3a20-ac68-e13c0560058f
print uuid.uuid4()
#144d622b-e83a-40ea-8ca1-66af8a86261c
print uuid.uuid5(uuid.NAMESPACE_DNS, 'yuanlin')
#4a47c18d-037a-5df6-9e12-20b643c334d3

乍一看全都是36个字符,那么他们到底有什么不同呢,下面一一分析。

uuid1():这个是根据当前的时间戳和MAC地址生成的,最后的12个字符408d5c985711对应的就是MAC地址,因为是MAC地址,那么唯一性应该不用说了。但是生成后暴露了MAC地址这就很不好了。

uuid3():里面的namespace和具体的字符串都是我们指定的,然后呢···应该是通过MD5生成的,这个我们也很少用到,莫名其妙的感觉。

uuid4():这是基于随机数的uuid,既然是随机就有可能真的遇到相同的,但这就像中奖似的,几率超小,因为是随机而且使用还方便,所以使用这个的还是比较多的。

uuid5():这个看起来和uuid3()貌似并没有什么不同,写法一样,也是由用户来指定namespace和字符串,不过这里用的散列并不是MD5,而是SHA1.

下面再来说一下简单的处理,UUID中间的'-'是个比较奇怪的字符,那么应该去掉它,这其实超简单:

uid = str(uuid.uuid4())
suid = ''.join(uid.split('-'))

补充拓展:python生成uuid,并去掉中间的'-'

UUID(Universally Unique Identifier)是通用唯一识别码,是软件建构的标准,号称可以对任何一种东西进行唯一的编码。下面来看一下python中怎么生成uuid编码并去除其中间的符号‘-'。

import uuid

s_uuid=str(uuid.uuid4())

print s_uuid 

l_uuid=s_uuid.split('-')

s_uuid=''.join(l_uuid)

print s_uuid

第一次print出的s_uuid是

4717cf79-1a64-4156-a3e8-883f1b76210d

第二次print出的s_uuid是

4717cf791a644156a3e8883f1b76210d

以上这篇python生成并处理uuid的实现方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
学习Python3 Dlib19.7进行人脸面部识别
Jan 24 Python
Python获取系统所有进程PID及进程名称的方法示例
May 24 Python
TensorFlow用expand_dim()来增加维度的方法
Jul 26 Python
Python之两种模式的生产者消费者模型详解
Oct 26 Python
python opencv实现图像边缘检测
Apr 29 Python
Gauss-Seidel迭代算法的Python实现详解
Jun 29 Python
pytorch制作自己的LMDB数据操作示例
Dec 18 Python
python实现简易版学生成绩管理系统
Jun 22 Python
Pycharm中使用git进行合作开发的教程详解
Nov 17 Python
Python中Permission denied的解决方案
Apr 02 Python
Python selenium的这三种等待方式一定要会!
Jun 10 Python
python神经网络 使用Keras构建RNN训练
May 04 Python
python实现在线翻译功能
Mar 03 #Python
Python configparser模块配置文件过程解析
Mar 03 #Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
Mar 03 #Python
Django CSRF认证的几种解决方案
Mar 03 #Python
python实现电子词典
Mar 03 #Python
python关于变量名的基础知识点
Mar 03 #Python
python生成13位或16位时间戳以及反向解析时间戳的实例
Mar 03 #Python
You might like
php 文本文件的读取效率
2012/02/10 PHP
深入array multisort排序原理的详解
2013/06/18 PHP
PHP 安全检测代码片段(分享)
2013/07/05 PHP
PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法
2014/05/06 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
php7 错误处理机制修改实例分析
2020/05/25 PHP
js 表单提交后按钮变灰的实例代码
2013/08/16 Javascript
Javascript玩转继承(二)
2014/05/08 Javascript
js常用系统函数用法实例分析
2015/01/12 Javascript
Js数组排序函数sort()介绍
2015/06/08 Javascript
深入理解Java线程编程中的阻塞队列容器
2015/12/07 Javascript
Angularjs整合微信UI(weui)
2016/03/15 Javascript
jQuery unbind 删除绑定事件详解
2016/05/24 Javascript
使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
2016/09/01 Javascript
vuejs手把手教你写一个完整的购物车实例代码
2017/07/06 Javascript
vue translate peoject实现在线翻译功能【新手必看】
2018/06/07 Javascript
对angularJs中$sce服务安全显示html文本的实例
2018/09/30 Javascript
layui 数据表格 点击分页按钮 监听事件的实例
2019/09/02 Javascript
[01:25:09]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第二场
2014/05/24 DOTA
python判断列表的连续数字范围并分块的方法
2018/11/16 Python
树莓派用python中的OpenCV输出USB摄像头画面
2019/06/22 Python
django-csrf使用和禁用方式
2020/03/13 Python
使用python编写一个语音朗读闹钟功能的示例代码
2020/07/14 Python
基于Python实现全自动下载抖音视频
2020/11/06 Python
使用gunicorn部署django项目的问题
2020/12/30 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
2021/01/06 Python
利用CSS3实现动态的二级三级菜单效果实例源码
2017/01/04 HTML / CSS
List、Map、Set三个接口,存取元素时,各有什么特点?
2015/09/27 面试题
资深地理教师自我评价
2013/09/21 职场文书
大学生军训自我鉴定
2014/02/12 职场文书
安全标语大全
2014/06/10 职场文书
乡镇遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
2014年乡镇人大工作总结
2014/11/25 职场文书
2015年政教主任工作总结
2015/07/23 职场文书
Arthas排查Kubernetes中应用频繁挂掉重启异常
2022/02/28 MySQL
Windows server 2012 R2 安装IIS服务器
2022/04/29 Servers