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 相关文章推荐
解决python使用open打开文件中文乱码的问题
Dec 29 Python
python素数筛选法浅析
Mar 19 Python
Python基础教程之利用期物处理并发
Mar 29 Python
使用matplotlib画散点图的方法
May 25 Python
matplotlib实现区域颜色填充
Mar 18 Python
如何通过python实现人脸识别验证
Jan 17 Python
解决import tensorflow as tf 出错的原因
Apr 16 Python
Pytorch数据拼接与拆分操作实现图解
Apr 30 Python
使用Keras画神经网络准确性图教程
Jun 15 Python
增大python字体的方法步骤
Jul 05 Python
Python运算符+与+=的方法实例
Feb 18 Python
bat批处理之字符串操作的实现
Mar 16 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 常见郁闷问题答解
2006/11/25 PHP
探讨fckeditor在Php中的配置详解
2013/06/08 PHP
PHP内核探索之变量
2015/12/22 PHP
PHP验证码类ValidateCode解析
2017/01/07 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
2020/02/16 PHP
js取得url地址参数实例
2013/02/22 Javascript
jquery easyui使用心得
2014/07/07 Javascript
浅谈nodeName,nodeValue,nodeType,typeof 的区别
2015/01/13 Javascript
AngularJS基础知识笔记之过滤器
2015/05/10 Javascript
jQuery+css3实现文字跟随鼠标的上下抖动
2015/07/31 Javascript
jQuery插件ajaxFileUpload使用实例解析
2016/10/19 Javascript
Node.js 8 中的重要新特性
2017/06/28 Javascript
JS+HTML5 FileReader实现文件上传前本地预览功能
2020/03/27 Javascript
vue做网页开场视频的实例代码
2017/10/20 Javascript
使用vue-route 的 beforeEach 实现导航守卫(路由跳转前验证登录)功能
2018/03/22 Javascript
详解JavaScript的this指向和绑定
2020/09/08 Javascript
Ant design vue table 单击行选中 勾选checkbox教程
2020/10/24 Javascript
[01:20]辉夜杯背景故事宣传片《辉夜传说》
2015/12/25 DOTA
Python使用urllib2获取网络资源实例讲解
2013/12/02 Python
python3利用Dlib19.7实现人脸68个特征点标定
2018/02/26 Python
python之super的使用小结
2018/08/13 Python
Tesserocr库的正确安装方式
2018/10/19 Python
Python urlopen()和urlretrieve()用法解析
2020/01/07 Python
Python sqlalchemy时间戳及密码管理实现代码详解
2020/08/01 Python
MANGO官方网站:西班牙芒果服装品牌
2017/01/15 全球购物
美国的Eastbay旗下的运动款子品牌:Final-Score
2018/01/01 全球购物
美国新娘礼品店:The Paisley Box
2020/09/08 全球购物
高中自我评价分享
2013/12/05 职场文书
工人先锋号申报材料
2014/12/29 职场文书
总经理岗位职责
2015/02/04 职场文书
2015年监理工作总结范文
2015/04/07 职场文书
婚礼上证婚人致辞
2015/07/28 职场文书
如何计划开一家便利店?
2019/07/31 职场文书
python实现手机推送 代码也就10行左右
2022/04/12 Python
《火纹风花雪月无双》预告“神秘雇佣兵” 紫发剑客
2022/04/13 其他游戏
JavaScript实现九宫格拖拽效果
2022/06/28 Javascript