这篇文章主要介绍了python生成并处理uuid的实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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的实现方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持爱安网。

最新资讯
波场与波卡隔空互怼 太坊链上项目代币价格续刷新高

波场与波卡隔空互怼

1月25日,波场创始人孙宇晨发推表示“波场平行链拍卖”,
敲黑板!今年中国航天看什么?重点都在这里了

敲黑板!今年中国航天看

2021年,我国航天将继续再接再厉,仅中国航天科技集团就计
北斗再立新功!“极目”卫星准实时下传伽马暴观测警报

北斗再立新功!“极目”

北斗卫星导航系统再立新功!
血腥的动物竞技,是以文化之名抒发暴力欲望吗?

血腥的动物竞技,是以文

更多时候,在动物竞技背后隐藏的是非理性的暴力,有人追求
15分钟=1年!当人工智能遇到材料学……

15分钟=1年!当人工智能

一种机器学习算法能够以比正常速度快近4万倍的速度为
阿拉斯加冰面上苔藓球结队前行,行为之谜至今无解

阿拉斯加冰面上苔藓球

是什么推动着“小鼠”的成群行动,至今还是个谜。
最新文章
在pycharm中为项目导入anacodna环境的操作方法

在pycharm中为项目导

这篇文章主要介绍了在pycharm中为项目导入anacodna环
tensorflow的ckpt及pb模型持久化方式及转化详解

tensorflow的ckpt及pb

今天小编就为大家分享一篇tensorflow的ckpt及pb模型持
PyTorch笔记之scatter()函数的使用

PyTorch笔记之scatter

这篇文章主要介绍了PyTorch笔记之scatter()函数的使用
python3实现网页版raspberry pi(树莓派)小车控制

python3实现网页版ras

这篇文章主要为大家详细介绍了python3实现网页版raspb
完美解决pycharm导入自己写的py文件爆红问题

完美解决pycharm导入

今天小编就为大家分享一篇完美解决pycharm导入自己写
pycharm内无法import已安装的模块问题解决

pycharm内无法import

今天小编就为大家分享一篇pycharm内无法import已安装