Python使用UUID庫生成唯一ID,媽媽再也不會擔心我的生成重複ID了
一、概述
UUID是128位的全域性唯一識別符號,通常由32位元組的字串表示。它可以保證時間和空間的唯一性,也稱為GUID,全稱為:
UUID —— Universally Unique IDentifierPython 中叫 UUID GUID —— Globally Unique IDentifierC#中叫 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。
import uuid print(uuid.uuid1()) #out 25182c94-382f-11e9-8c0c-d0a637ed3f35 print(uuid.uuid3(uuid.NAMESPACE_DNS, 'python.org')) #out 6fa459ea-ee8a-3ca4-894e-db77e160355e print(uuid.uuid4()) #out ce5ac630-08f9-4247-8d4a-5df0cbf4a361 print(uuid.uuid5(uuid.NAMESPACE_DNS, 'python.org')) #886313e1-3b8a-5372-9b90-0c9aee199e5d
下面的是我的公眾號二維碼圖片,歡迎關注。

歡迎關注