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