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('-'))

轉自:https://blog.csdn.net/yl416306434/article/details/80569688

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章