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通过zlib实现压缩与解压字符串的方法
Nov 19 Python
Python实现的Google IP 可用性检测脚本
Apr 23 Python
python3+PyQt5实现使用剪贴板做复制与粘帖示例
Jan 24 Python
Pyinstaller将py打包成exe的实例
Mar 31 Python
对numpy中轴与维度的理解
Apr 18 Python
python3爬虫之设计签名小程序
Jun 19 Python
Django框架orM与自定义SQL语句混合事务控制操作
Jun 27 Python
Python如何把Spark数据写入ElasticSearch
Apr 18 Python
Python的Django框架实现数据库查询(不返回QuerySet的方法)
May 19 Python
Django form表单与请求的生命周期步骤详解
Jun 07 Python
tensorflow之读取jpg图像长和宽实例
Jun 18 Python
Python3中最常用的5种线程锁实例总结
Jul 07 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/10/09 PHP
php提供实现反射的方法和实例代码
2019/09/17 PHP
laravel http 自定义公共验证和响应的方法
2019/09/29 PHP
JavaScript中Object和Function的关系小结
2009/09/26 Javascript
JQuery Tips(2) 关于$()包装集你不知道的
2009/12/14 Javascript
超越Jquery_01_isPlainObject分析与重构
2010/10/20 Javascript
jquery实现input输入框实时输入触发事件代码
2014/01/28 Javascript
JavaScript模拟实现继承的方法
2015/03/30 Javascript
Windows系统下Node.js的简单入门教程
2015/06/23 Javascript
基于JavaScript的操作系统你听说过吗?
2016/01/28 Javascript
Javascript类型系统之undefined和null浅析
2016/07/13 Javascript
Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)
2016/10/25 Javascript
原生JS实现幻灯片
2017/02/22 Javascript
angularjs过滤器--filter与ng-repeat配合有奇效
2017/04/20 Javascript
js判断复选框是否选中的方法示例【基于jQuery】
2019/10/10 jQuery
JavaScript获取当前url路径过程解析
2019/12/27 Javascript
jQuery实现简单聊天室
2020/02/08 jQuery
vue 获取url参数、get参数返回数组的操作
2020/11/12 Javascript
JavaScript async/await原理及实例解析
2020/12/02 Javascript
Python中除法使用的注意事项
2014/08/21 Python
在Django中创建第一个静态视图
2015/07/15 Python
python3.4用函数操作mysql5.7数据库
2017/06/23 Python
python可视化实现KNN算法
2019/10/16 Python
Python3 sys.argv[ ]用法详解
2019/10/24 Python
css3和jquery实现的可折叠导航菜单适合放在手机网页的导航菜单
2014/09/02 HTML / CSS
html5生成柱状图(条形图)效果的实例代码
2016/03/25 HTML / CSS
马来西亚时装购物网站:ZALORA马来西亚
2017/03/14 全球购物
西安夏日科技有限公司Java笔试题
2013/01/11 面试题
计算机专业推荐信范文
2013/11/20 职场文书
个人批评与自我批评
2014/10/15 职场文书
感谢信的格式
2015/01/21 职场文书
经典搞笑版检讨书
2015/02/19 职场文书
幼儿园开学家长寄语(2016春季)
2015/12/03 职场文书
实战Python爬虫爬取酷我音乐
2022/04/11 Python
项目中Nginx多级代理是如何获取客户端的真实IP地址
2022/05/30 Servers
Sentry的安装、配置、使用教程(Sentry日志手机系统)
2022/07/23 Python