uuid的使用


1、mysql中直接使用uuid()函數,可以生成一個隨機的uuid

正常的uuid是36位長度的,其中有4個字符是‘-’,在mysql中可以使用replace()函數來替換‘-’

 

insert into 表名(字段名) values(uuid())

 

把name=1的字段的id改成uuid,並去掉‘-’

UPDATE bill_annex set id = REPLACE(UUID(),"-","") where name= '1'

 

 

2、uuid模塊

uuid1()基於時間戳

由MAC地址,當前時間戳,隨機數字生成,可以保證全球范圍內的唯一性,但是由於MAC地址的使用同時帶來了安全問題

局域網用IP代替MAC

uuid2()---基於分布式計算環境DCE(python中沒有這個函數)

算法和uuid1相同,不同的是把時間戳的前4位換位POSIX的UID,實際中很少用到該方法。

uuid3()基於名字和MD5散列值

通過計算名字和命名空間的MD5散列值得到,保證了同一命名空間中不同名字的唯一性,和不同命名空間的唯一性,但同一命名空間的名字生成相同的uuid

uuid4()基於隨機數

由偽隨機數得到,有一定的重復概率,該概率可以計算出來,最好不用這個

uuid5()基於名字的SHA-1散列值

算法和uuid3()相同,不同的是使用secure hash algorithm1算法

 

使用經驗:

如果在global的分布式計算環境下,最好用uuid1

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

 

 

使用

import uuid
 
# uuid1()
>>> print(uuid.uuid1())
2cf0fa7e-48d9-11e6-93fb-c03fd53413ef
# uuid3()
>>> print(uuid.uuid3(uuid.NAMESPACE_DNS, 'test'))
45a113ac-c7f2-30b0-90a5-a399ab912716
# uuid4()
>>> print(uuid.uuid4())
08bffbb6-05e1-41c1-8989-6aa07a4a5e5d
# uuid5()
>>> print(uuid.uuid5(uuid.NAMESPACE_DNS, 'test'))
4be0643f-1d98-573b-97cd-ca98a65347dd

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM