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实现读取目录所有文件的文件名并保存到txt文件代码
Nov 22 Python
python字符串编码识别模块chardet简单应用
Jun 15 Python
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
May 03 Python
机器学习的框架偏向于Python的13个原因
Dec 07 Python
pyqt弹出新对话框,以及关闭对话框获取数据的实例
Jun 18 Python
对PyQt5中的菜单栏和工具栏实例详解
Jun 20 Python
python3用PIL把图片转换为RGB图片的实例
Jul 04 Python
用sqlalchemy构建Django连接池的实例
Aug 29 Python
Python+opencv+pyaudio实现带声音屏幕录制
Dec 23 Python
使用Python画了一棵圣诞树的实例代码
Nov 27 Python
python 实现一个简单的线性回归案例
Dec 17 Python
python openpyxl模块的使用详解
Feb 25 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
Thinkphp将二维数组变为标签适用的一维数组方法总结
2014/10/30 PHP
php静态成员方法和静态的成员属性的使用方法
2017/10/26 PHP
php实现的生成排列算法示例
2019/07/25 PHP
前淘宝前端开发工程师阿当的PPT中有JS技术理念问题
2010/01/15 Javascript
jQuery Deferred和Promise创建响应式应用程序详细介绍
2013/03/05 Javascript
向左滚动文字 js代码效果
2013/08/17 Javascript
javascript中定义私有方法说明(private method)
2014/01/27 Javascript
利用jQuery设计一个简单的web音乐播放器的实例分享
2016/03/08 Javascript
详解AngularJS controller调用factory
2017/05/19 Javascript
vue cli webpack中使用sass的方法
2018/02/24 Javascript
详解js的视频和音频采集
2018/08/09 Javascript
vuejs+element UI点击编辑表格某一行时获取内容填入表单的示例
2018/10/31 Javascript
小程序封装wx.request请求并创建接口管理文件的实现
2019/04/29 Javascript
vue中监听路由参数的变化及方法
2019/12/06 Javascript
使用Taro实现小程序商城的购物车功能模块的实例代码
2020/06/05 Javascript
解决vue scoped html样式无效的问题
2020/10/24 Javascript
解析Python中的二进制位运算符
2015/05/13 Python
Python标准库之collections包的使用教程
2017/04/27 Python
安装Python和pygame及相应的环境变量配置(图文教程)
2017/06/04 Python
解决python3中解压zip文件是文件名乱码的问题
2018/03/22 Python
Django REST framework 分页的实现代码
2019/06/19 Python
纯python进行矩阵的相乘运算的方法示例
2019/07/17 Python
Python 正则表达式 re.match/re.search/re.sub的使用解析
2019/07/22 Python
django 实现将本地图片存入数据库,并能显示在web上的示例
2019/08/07 Python
python实现文件批量编码转换及注意事项
2019/10/14 Python
Python venv虚拟环境配置过程解析
2020/07/08 Python
Python 实现微信自动回复的方法
2020/09/11 Python
杭州信雅达系统.NET工程师面试试题
2015/02/08 面试题
应届实习生的自我评价范文
2014/01/05 职场文书
通信研究生自荐信
2014/02/01 职场文书
机关节能减排实施方案
2014/03/17 职场文书
学习考察心得体会
2014/09/04 职场文书
中秋客户感谢信
2015/01/22 职场文书
2015年党小组工作总结
2015/05/26 职场文书
MySQL 数据类型选择原则
2021/05/27 MySQL