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脚本实现虾米网签到功能
Apr 12 Python
python分布式环境下的限流器的示例
Oct 26 Python
python清理子进程机制剖析
Nov 23 Python
Java编程迭代地删除文件夹及其下的所有文件实例
Feb 10 Python
Python数据类型之列表和元组的方法实例详解
Jul 08 Python
python3 BeautifulSoup模块使用字典的方法抓取a标签内的数据示例
Nov 28 Python
Python生成器next方法和send方法区别详解
May 30 Python
Python使用文件操作实现一个XX信息管理系统的示例
Jul 02 Python
基于python模拟TCP3次握手连接及发送数据
Nov 06 Python
pandas统计重复值次数的方法实现
Feb 20 Python
Python创建自己的加密货币的示例
Mar 01 Python
Python多线程 Queue 模块常见用法
Jul 04 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需登录的文件上传管理系统
2020/03/21 PHP
分享五个PHP7性能优化提升技巧
2015/12/07 PHP
php使用redis的有序集合zset实现延迟队列应用示例
2020/02/20 PHP
基础的prototype.js常用函数及其用法
2007/03/10 Javascript
jquery 3D 标签云示例代码
2014/06/12 Javascript
js实现select跳转功能代码
2014/10/22 Javascript
js实现可兼容IE、FF、Chrome、Opera及Safari的音乐播放器
2015/02/11 Javascript
元素绑定click点击事件方法
2015/06/08 Javascript
javascript日期验证之输入日期大于等于当前日期
2015/12/13 Javascript
浅谈js多维数组和hash数组定义和使用
2016/07/27 Javascript
JS实现的五级联动菜单效果完整实例
2017/02/23 Javascript
微信小程序封装http访问网络库实例代码
2017/05/24 Javascript
使用Bootstrap + Vue.js实现表格的动态展示、新增和删除功能
2017/11/27 Javascript
React数据传递之组件内部通信的方法
2017/12/31 Javascript
Angular实现的进度条功能示例
2018/02/18 Javascript
vuejs项目打包之后的首屏加载优化及打包之后出现的问题
2018/04/01 Javascript
详解Koa中更方便简单发送响应的方式
2018/07/20 Javascript
vue自定义指令之面板拖拽的实现
2019/04/14 Javascript
深入理解JavaScript 箭头函数
2019/05/30 Javascript
微信小程序wx.request拦截器使用详解
2019/07/09 Javascript
jQuery+PHP+Ajax实现动态数字统计展示功能
2019/12/25 jQuery
react PropTypes校验传递的值操作示例
2020/04/28 Javascript
python发布模块的步骤分享
2014/02/21 Python
对于Python编程中一些重用与缩减的建议
2015/04/14 Python
Python实现判断并移除列表指定位置元素的方法
2018/04/13 Python
使用Python AIML搭建聊天机器人的方法示例
2018/07/09 Python
pytorch 中pad函数toch.nn.functional.pad()的用法
2020/01/08 Python
django中嵌套的try-except实例
2020/05/21 Python
软件工程师面试题
2012/06/25 面试题
成人大专自我鉴定范文
2013/10/19 职场文书
个人简历中的自我评价怎么写
2014/01/26 职场文书
保护环境演讲稿
2014/05/10 职场文书
党员服务承诺书
2014/05/28 职场文书
2016企业先进集体事迹材料
2016/02/25 职场文书
干货干货!2019最新优秀创业计划书
2019/03/21 职场文书
公文写作:教你写“建议书”
2019/05/07 职场文书