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的正则表达式re模块的常用方法
Mar 09 Python
为Python的web框架编写MVC配置来使其运行的教程
Apr 30 Python
flask-restful使用总结
Dec 04 Python
PyCharm在新窗口打开项目的方法
Jan 17 Python
使用python3构建文件传输的方法
Feb 13 Python
获取django框架orm query执行的sql语句实现方法分析
Jun 20 Python
Python使用ffmpy将amr格式的音频转化为mp3格式的例子
Aug 08 Python
python os.path.isfile 的使用误区详解
Nov 29 Python
tensorflow实现打印ckpt模型保存下的变量名称及变量值
Jan 04 Python
pytorch使用tensorboardX进行loss可视化实例
Feb 24 Python
PO模式在selenium自动化测试框架的优势
Mar 20 Python
Python实现仓库管理系统
May 30 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
Windows 下的 PHP-PEAR 安装方法
2010/11/20 PHP
PHP用反撇号执行外部命令
2015/04/14 PHP
弹出广告特效代码(一个IP只弹出一次)
2007/05/11 Javascript
麦鸡的TAB切换功能结合了javascript和css
2007/12/17 Javascript
JavaScript Eval 函数使用
2010/03/23 Javascript
javascript使用avalon绑定实现checkbox全选
2015/05/06 Javascript
JavaScript生成福利彩票双色球号码
2015/05/15 Javascript
jquery实现点击向下展开菜单项(伸缩导航)效果
2015/08/22 Javascript
jquery easyUI中ajax异步校验用户名
2016/08/19 Javascript
js面向对象编程总结
2017/02/16 Javascript
JavaScript轮播图简单制作方法
2017/02/20 Javascript
详解Angular.js数据绑定时自动转义html标签及内容
2017/03/30 Javascript
解决webpack打包速度慢的解决办法汇总
2017/07/06 Javascript
vue增删改查的简单操作
2017/07/15 Javascript
微信小程序实现文字跑马灯
2020/05/26 Javascript
js+html实现周岁年龄计算器
2019/06/25 Javascript
微信小程序组件传值图示过程详解
2019/07/31 Javascript
关于layui时间回显问题的解决方法
2019/09/24 Javascript
Javascript实现鼠标点击冒泡特效
2019/12/24 Javascript
Vue 微信端扫描二维码苹果端却只能保存图片问题(解决方法)
2020/01/19 Javascript
详解Webpack4多页应用打包方案
2020/07/16 Javascript
vue动态设置路由权限的主要思路
2021/01/13 Vue.js
[45:50]完美世界DOTA2联赛PWL S3 CPG vs Forest 第二场 12.16
2020/12/17 DOTA
Django migrations 默认目录修改的方法教程
2018/09/28 Python
使用python实现mqtt的发布和订阅
2019/05/05 Python
django一对多模型以及如何在前端实现详解
2019/07/24 Python
使用python 将图片复制到系统剪贴中
2019/12/13 Python
pycharm工具连接mysql数据库失败问题
2020/04/01 Python
英国奢侈品概念店:Base Blu
2019/05/16 全球购物
自动化工程专业个人应聘自荐信
2013/09/26 职场文书
写给女朋友的道歉信
2014/01/08 职场文书
两年的个人工作自我评价
2014/01/10 职场文书
彩色的非洲教学反思
2014/02/18 职场文书
志愿者活动总结报告
2014/06/27 职场文书
股东授权委托书范本
2014/09/13 职场文书
九年级英语教学反思
2016/02/15 职场文书