Python使用UUID庫生成唯一ID

2021-09-08 15:46:31 字數 1385 閱讀 5485

資料:

python官方doc:《20.15. uuid — uuid objects according to rfc 4122》

uuid的演算法介紹:《a universally unique identifier (uuid) urn namespace》

概述: uuid

是128位的全域性唯一識別符號,通常由32位元組的字串表示。

它可以保證時間和空間的唯一性,也稱為guid,全稱為:

uuid —— universally unique identifier

python 中叫 uuid

guid —— globally unique identifier c# 中叫 guid

它通過mac位址、時間戳、命名空間、隨機數、偽隨機數來保證生成id的唯一性。

uuid主要有五個演算法,也就是五種方法來實現:

1、uuid1()——基於時間戳

由mac位址、當前時間戳、隨機數生成。可以保證全球範圍內的唯一性,

但mac的使用同時帶來安全性問題,區域網中可以使用ip來代替mac。

2、uuid2()——基於分布式計算環境dce(python中沒有這個函式)

演算法與uuid1相同,不同的是把時間戳的前4位置換為posix的uid。

實際中很少用到該方法。

3、uuid3()——基於名字的md5雜湊值

通過計算名字和命名空間的md5雜湊值得到,保證了同一命名空間中不同名字的唯一性,

和不同命名空間的唯一性,但同一命名空間的同一名字生成相同的uuid。

4、uuid4()——基於隨機數

由偽隨機數得到,有一定的重複概率,該概率可以計算出來。

5、uuid5()——基於名字的sha-1雜湊值

演算法與uuid3相同,不同的是使用 secure hash algorithm 1 演算法

使用方面:

首先,python中沒有基於dce的,所以uuid2可以忽略;

其次,uuid4存在概率性重複,由無對映性,最好不用;

再次,若在global的分布式計算環境下,最好用uuid1;

最後,若有名字的唯一性要求,最好用uuid3或uuid5。

編碼方法:

# -*- coding: utf-8 -*-

import uuid

name = "test_name"

namespace = "test_namespace"

print uuid.uuid1() # 帶參的方法參見python doc

print uuid.uuid3(namespace, name)

print uuid.uuid4()

print uuid.uuid5(namespace, name)

Python使用UUID庫生成唯一ID

資料 python官方doc 20.15.uuid uuid objects according to rfc 4122 uuid的演算法介紹 a universally unique identifier uuid urn namespace 概述 uuid 是128位的全域性唯一識別符號,通常由...

Python使用UUID庫生成唯一ID

uuid是128位的全域性唯一識別符號,通常由32位元組的字串表示。它可以保證時間和空間的唯一性,也稱為guid,全稱為 uuid universally unique identifier,python 中叫 uuid。它通過mac位址 時間戳 命名空間 隨機數 偽隨機數來保證生成id的唯一性。u...

Python使用UUID庫生成唯一ID

資料 python官方doc 20.15.uuid uuid objects according to rfc 4122 uuid的演算法介紹 a universally unique identifier uuid urn namespace 概述 uuid 是128位的全域性唯一識別符號,通常由...