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 相关文章推荐
wxPython窗口中文乱码解决方法
Oct 11 Python
Python的__builtin__模块中的一些要点知识
May 02 Python
Python 使用SMTP发送邮件的代码小结
Sep 21 Python
深入理解NumPy简明教程---数组2
Dec 17 Python
使用Python3 编写简单信用卡管理程序
Dec 21 Python
Python格式化输出%s和%d
May 07 Python
python中virtualenvwrapper安装与使用
May 20 Python
python数据结构之线性表的顺序存储结构
Sep 28 Python
Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】
Oct 30 Python
关于ZeroMQ 三种模式python3实现方式
Dec 23 Python
python输出pdf文档的实例
Feb 13 Python
python 实现德洛内三角剖分的操作
Apr 22 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
杏林同学录(五)
2006/10/09 PHP
php中截取字符串支持utf-8
2007/01/18 PHP
全世界最小的php网页木马一枚 附PHP木马的防范方法
2009/10/09 PHP
php 批量替换html标签的实例代码
2013/11/26 PHP
PHP的Yii框架中行为的定义与绑定方法讲解
2016/03/18 PHP
ThinkPHP5+UEditor图片上传到阿里云对象存储OSS功能示例
2019/08/05 PHP
jQuery对象和DOM对象相互转化
2009/04/24 Javascript
jquery Firefox3.5中操作select的问题
2009/07/10 Javascript
jQuery ui 1.7更新小结
2009/08/15 Javascript
XMLHTTPRequest的属性和方法简介
2010/11/23 Javascript
JS实现div居中示例
2014/04/17 Javascript
jQuery中clone()方法用法实例
2015/01/16 Javascript
jQuery删除一个元素后淡出效果展示删除过程的方法
2015/03/18 Javascript
javascript属性访问表达式用法分析
2015/04/25 Javascript
关于JS中match() 和 exec() 返回值和属性的测试
2016/03/21 Javascript
JS控制静态页面之间传递参数获取参数并应用的简单实例
2016/08/10 Javascript
基于Vue2的移动端开发环境搭建详解
2016/11/03 Javascript
JavaScript 函数节流详解及方法总结
2017/02/09 Javascript
Vue计算属性的学习笔记
2017/03/22 Javascript
vue之浏览器存储方法封装实例
2018/03/15 Javascript
纯js封装的ajax功能函数与用法示例
2018/05/14 Javascript
分享5个好用的javascript文件上传插件
2018/09/16 Javascript
Vue中computed、methods与watch的区别总结
2019/04/10 Javascript
JS如何判断对象是否包含某个属性
2020/08/29 Javascript
[01:06:26]全国守擂赛第二周 Team Coach vs DeMonsTer
2020/04/28 DOTA
python使用datetime模块计算各种时间间隔的方法
2015/03/24 Python
详解Python最长公共子串和最长公共子序列的实现
2018/07/07 Python
使用Python将Mysql的查询数据导出到文件的方法
2019/02/25 Python
django 类视图的使用方法详解
2019/07/24 Python
Python文本文件的合并操作方法代码实例
2020/03/31 Python
Python Scrapy多页数据爬取实现过程解析
2020/06/12 Python
ASP.NET Core中的配置详解
2021/02/05 Python
预订全球最佳旅行体验:Viator
2018/03/30 全球购物
2014年图书馆工作总结
2014/11/25 职场文书
三方合作意向书范本
2015/05/09 职场文书
导游词之岳阳楼
2019/09/25 职场文书