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 相关文章推荐
ssh批量登录并执行命令的python实现代码
May 25 Python
python的Template使用指南
Sep 11 Python
python网络编程实例简析
Sep 26 Python
详解Django中Request对象的相关用法
Jul 17 Python
python实现决策树、随机森林的简单原理
Mar 26 Python
windows下python虚拟环境virtualenv安装和使用详解
Jul 16 Python
seek引发的python文件读写的问题及解决
Jul 26 Python
python实现XML解析的方法解析
Nov 16 Python
Python自动重新加载模块详解(autoreload module)
Apr 01 Python
Python字符串函数strip()原理及用法详解
Jul 23 Python
Python configparser模块应用过程解析
Aug 14 Python
python 实现图片修复(可用于去水印)
Nov 19 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生成PDF格式文件并且加密
2015/06/22 PHP
PHP分页初探 一个最简单的PHP分页代码的简单实现
2016/06/21 PHP
在浏览器窗口上添加遮罩层的方法
2012/11/12 Javascript
js变换显示图片的实例
2013/04/16 Javascript
js判断FCKeditor内容是否为空的两种形式
2013/05/14 Javascript
Jquery 复选框取值兼容FF和IE8(测试有效)
2013/10/29 Javascript
浅析JavaScript事件和方法
2015/02/28 Javascript
JavaScript的代码编写格式规范指南
2015/12/07 Javascript
JavaScript新增样式规则(推荐)
2016/07/19 Javascript
SeaJS中use函数用法实例分析
2017/10/10 Javascript
async/await优雅的错误处理方法总结
2019/01/30 Javascript
微信小程序实现分享商品海报功能
2019/09/30 Javascript
详解在IDEA中将Echarts引入web两种方式(使用js文件和maven的依赖导入)
2020/07/11 Javascript
基于Cesium绘制抛物弧线
2020/11/18 Javascript
Python3写入文件常用方法实例分析
2015/05/22 Python
Python中关键字nonlocal和global的声明与解析
2017/03/12 Python
Python简单实现查找一个字符串中最长不重复子串的方法
2018/03/26 Python
flask框架实现连接sqlite3数据库的方法分析
2018/07/16 Python
Python编程深度学习绘图库之matplotlib
2018/12/28 Python
对Python的交互模式和直接运行.py文件的区别详解
2019/06/29 Python
python爬虫scrapy框架之增量式爬虫的示例代码
2021/02/26 Python
HTML5 拖拽批量上传文件的示例代码
2018/03/28 HTML / CSS
加拿大著名的奢侈品购物网站:SSENSE(支持中文)
2020/06/25 全球购物
Linux文件操作命令都有哪些
2015/02/27 面试题
京剧自荐信
2014/01/26 职场文书
工程技术员岗位职责
2014/03/02 职场文书
领导接待方案
2014/03/13 职场文书
供货协议书范本
2014/04/22 职场文书
党的群众路线教育实践活动批评与自我批评范文
2014/10/16 职场文书
单位租房协议书样本
2014/10/30 职场文书
人事主管岗位职责
2015/02/04 职场文书
幼儿园开学温馨提示
2015/07/15 职场文书
go web 预防跨站脚本的实现方式
2021/06/11 Golang
关于redisson缓存序列化几枚大坑说明
2021/08/04 Redis
PHP正则表达式之RCEService回溯
2022/04/11 PHP
Java实现贪吃蛇游戏的示例代码
2022/09/23 Java/Android