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简单获取数组元素个数的方法
Jul 13 Python
发布你的Python模块详解
Sep 15 Python
分享一下如何编写高效且优雅的 Python 代码
Sep 07 Python
Python matplotlib绘图可视化知识点整理(小结)
Mar 16 Python
Django数据库连接丢失问题的解决方法
Dec 29 Python
pandas DataFrame的修改方法(值、列、索引)
Aug 02 Python
python__name__原理及用法详解
Nov 02 Python
使用Django xadmin 实现修改时间选择器为不可输入状态
Mar 30 Python
python判断元素是否存在的实例方法
Sep 24 Python
python 实现数据库中数据添加、查询与更新的示例代码
Dec 07 Python
学点简单的Django之第一个Django程序的实现
Feb 24 Python
python学习之panda数据分析核心支持库
May 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常用特殊运算符号和函数总结(php新手入门必看)
2013/02/02 PHP
Ajax+PHP实现的模拟进度条功能示例
2019/02/11 PHP
设定php简写功能的方法
2019/11/28 PHP
JavaScript 通过模式匹配实现重载
2010/08/12 Javascript
javascript十六进制及二进制转化的方法
2015/05/06 Javascript
js判断浏览器类型及设备(移动页面开发)
2015/07/30 Javascript
第一次记录Bootstrap table学习笔记(1)
2017/05/18 Javascript
不得不看之JavaScript构造函数及new运算符
2017/08/21 Javascript
jQuery Validate插件ajax方式验证输入值的实例
2017/12/21 jQuery
浅谈微信小程序之官方UI框架we-ui使用教程
2018/08/20 Javascript
优雅的处理vue项目异常实战记录
2019/06/05 Javascript
pm2启动ssr失败的解决方法
2019/06/29 Javascript
Vue中对iframe实现keep alive无刷新的方法
2019/07/23 Javascript
[59:15]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.20
2020/11/20 DOTA
跟老齐学Python之永远强大的函数
2014/09/14 Python
讲解Python中fileno()方法的使用
2015/05/24 Python
python制作花瓣网美女图片爬虫
2015/10/28 Python
python实现的正则表达式功能入门教程【经典】
2017/06/05 Python
python3读取excel文件只提取某些行某些列的值方法
2018/07/10 Python
在ubuntu16.04中将python3设置为默认的命令写法
2018/10/31 Python
python数据处理 根据颜色对图片进行分类的方法
2018/12/08 Python
nohup后台启动Python脚本,log不刷新的解决方法
2019/01/14 Python
Python tkinter 下拉日历控件代码
2020/03/04 Python
Java Spring项目国际化(i18n)详细方法与实例
2020/03/20 Python
Python 读取位于包中的数据文件
2020/08/07 Python
html5 input属性使用示例
2013/06/28 HTML / CSS
加拿大快时尚零售商:Ardene
2018/02/14 全球购物
大学生找工作求职信
2014/07/09 职场文书
信用卡工作证明模板
2014/09/14 职场文书
成都人事代理协议书
2014/10/25 职场文书
水电工程师岗位职责
2015/02/13 职场文书
高中生综合素质自我评价
2015/03/06 职场文书
2016年度员工工作表现评语
2015/12/02 职场文书
CSS实现漂亮的时钟动画效果的实例代码
2021/03/30 HTML / CSS
Python实现Telnet自动连接检测密码的示例
2021/04/16 Python