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读取Android permission文件
Nov 01 Python
python基础教程之基本数据类型和变量声明介绍
Aug 29 Python
跟老齐学Python之赋值,简单也不简单
Sep 24 Python
Python的净值数据接口调用示例分享
Mar 15 Python
python读取txt文件中特定位置字符的方法
Dec 24 Python
Python turtle库绘制菱形的3种方式小结
Nov 23 Python
Python二次规划和线性规划使用实例
Dec 09 Python
python3 常见解密加密算法实例分析【base64、MD5等】
Dec 19 Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
Apr 27 Python
sqlalchemy实现时间列自动更新教程
Sep 02 Python
Python基础 括号()[]{}的详解
Nov 07 Python
Python 一键获取电脑浏览器的账号密码
May 11 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 Javascript
php microtime获取浮点的时间戳
2010/02/21 PHP
PHP 字符串加密函数(在指定时间内加密还原字符串,超时无法还原)
2010/04/28 PHP
destoon设置自定义搜索的方法
2014/06/21 PHP
ThinkPHP验证码和分页实例教程
2014/08/22 PHP
php发送邮件的问题详解
2015/06/22 PHP
详解WordPress开发中的get_post与get_posts函数使用
2016/01/04 PHP
Smarty模板引擎缓存机制详解
2016/05/23 PHP
解析PHP之提取多维数组指定列的方法
2017/01/03 PHP
浅析js中取绝对值的2种方法
2013/07/09 Javascript
跨域资源共享 CORS 详解
2016/04/26 Javascript
javascript实现的猜数小游戏完整实例代码
2016/05/10 Javascript
angularjs项目的页面跳转如何实现(5种方法)
2017/05/25 Javascript
详解vue-router和vue-cli以及组件之间的传值
2017/07/04 Javascript
老生常谈js中的MVC
2017/07/25 Javascript
深入理解JavaScript 箭头函数
2019/05/30 Javascript
angular8.5集成TinyMce5的使用和详细配置(推荐)
2020/11/16 Javascript
JS实现简易日历效果
2021/01/25 Javascript
Python 对输入的数字进行排序的方法
2018/06/23 Python
python基础知识(一)变量与简单数据类型详解
2019/04/17 Python
Django中URL的参数传递的实现
2019/08/04 Python
python能做什么 python的含义
2019/10/12 Python
Python爬虫教程知识点总结
2020/10/19 Python
什么是命名空间(NameSpace)
2015/11/24 面试题
信用社实习人员自我鉴定
2013/09/20 职场文书
葡萄牙语专业个人求职信
2013/12/10 职场文书
商场活动策划方案
2014/01/24 职场文书
幼儿园大班毕业感言
2014/02/06 职场文书
安全大检查实施方案
2014/02/22 职场文书
《鞋匠的儿子》教学反思
2014/03/02 职场文书
体育口号大全
2014/06/18 职场文书
个人党性锻炼总结
2015/03/05 职场文书
开工典礼致辞
2015/07/29 职场文书
Go使用协程交替打印字符
2021/04/29 Golang
Spring Security使用单点登录的权限功能
2022/04/03 Java/Android
Django数据库(SQlite)基本入门使用教程
2022/07/07 Python