使用 UUID 庫(kù)生成唯一 ID

UUID(Universally Unique IDentifier) 是128位的全局唯一標(biāo)識(shí)符窜醉,通常由32字節(jié)的字符串表示。它可以保證時(shí)間和空間的唯一性桑涎,也稱為 GUID(Globally Unique IDentifier)倔叼。

它通過MAC地址、時(shí)間戳空郊、命名空間份招、隨機(jī)數(shù)、偽隨機(jī)數(shù)來保證生成ID的唯一性狞甚。

分類

在 python 中 UUID 主要有四種實(shí)現(xiàn):

  • uuid1() ——基于時(shí)間戳

由 MAC 地址锁摔、當(dāng)前時(shí)間戳、隨機(jī)數(shù)生成哼审⌒逞可以保證全球范圍內(nèi)的唯一性,但 MAC 的使用同時(shí)帶來安全性問題涩盾,局域網(wǎng)中可以使用 IP 來代替 MAC十气。

  • uuid3() ——基于名字的 MD5 散列值

通過計(jì)算名字和命名空間的 MD5 散列值得到,保證了同一命名空間中不同名字的唯一性春霍,和不同命名空間的唯一性砸西,但同一命名空間的同一名字生成相同的 uuid。

  • uuid4() ——基于隨機(jī)數(shù)

由偽隨機(jī)數(shù)得到终畅,有一定的重復(fù)概率籍胯,該概率可以計(jì)算出來。

  • uuid5() ——基于名字的 SHA-1 散列值

算法與 uuid3 相同离福,不同的是使用 Secure Hash Algorithm 1 算法

使用方面

  • uuid4 存在概率性重復(fù)杖狼,最好不用
  • 若在 Global 的分布式計(jì)算環(huán)境下,最好用 uuid1
  • 若有名字的唯一性要求妖爷,最好用 uuid3 或 uuid5

編碼方法

>>> import uuid

>>> # make a UUID based on the host ID and current time
>>> uuid.uuid1()
UUID('a8098c1a-f86e-11da-bd1a-00112444be1e')

>>> # make a UUID using an MD5 hash of a namespace UUID and a name
>>> uuid.uuid3(uuid.NAMESPACE_DNS, 'python.org')
UUID('6fa459ea-ee8a-3ca4-894e-db77e160355e')

>>> # make a random UUID
>>> uuid.uuid4()
UUID('16fd2706-8baf-433b-82eb-8c7fada847da')

>>> # make a UUID using a SHA-1 hash of a namespace UUID and a name
>>> uuid.uuid5(uuid.NAMESPACE_DNS, 'python.org')
UUID('886313e1-3b8a-5372-9b90-0c9aee199e5d')

>>> # make a UUID from a string of hex digits (braces and hyphens ignored)
>>> x = uuid.UUID('{00010203-0405-0607-0809-0a0b0c0d0e0f}')

>>> # convert a UUID to a string of hex digits in standard form
>>> str(x)
'00010203-0405-0607-0809-0a0b0c0d0e0f'

>>> # get the raw 16 bytes of the UUID
>>> x.bytes
'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f'

>>> # make a UUID from a 16-byte string
>>> uuid.UUID(bytes=x.bytes)
UUID('00010203-0405-0607-0809-0a0b0c0d0e0f')

實(shí)際參考

week, month, day, time_now, year = time.ctime().split()
check_time = year+ month + day + week + time_now
check_time + str(uuid.uuid4())
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蝶涩,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子絮识,更是在濱河造成了極大的恐慌绿聘,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件次舌,死亡現(xiàn)場(chǎng)離奇詭異熄攘,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)彼念,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門挪圾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浅萧,“玉大人,你說我怎么就攤上這事哲思⊥莩” “怎么了?”我有些...
    開封第一講書人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵棚赔,是天一觀的道長(zhǎng)帝簇。 經(jīng)常有香客問我,道長(zhǎng)靠益,這世上最難降的妖魔是什么丧肴? 我笑而不...
    開封第一講書人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮胧后,結(jié)果婚禮上闪湾,老公的妹妹穿的比我還像新娘。我一直安慰自己绩卤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開白布江醇。 她就那樣靜靜地躺著濒憋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪陶夜。 梳的紋絲不亂的頭發(fā)上凛驮,一...
    開封第一講書人閱讀 51,258評(píng)論 1 300
  • 那天,我揣著相機(jī)與錄音条辟,去河邊找鬼黔夭。 笑死,一個(gè)胖子當(dāng)著我的面吹牛羽嫡,可吹牛的內(nèi)容都是我干的本姥。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼杭棵,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼婚惫!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起魂爪,我...
    開封第一講書人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤先舷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后滓侍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蒋川,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年撩笆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了捺球。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缸浦。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖懒构,靈堂內(nèi)的尸體忽然破棺而出餐济,到底是詐尸還是另有隱情,我是刑警寧澤胆剧,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布絮姆,位于F島的核電站,受9級(jí)特大地震影響秩霍,放射性物質(zhì)發(fā)生泄漏篙悯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一铃绒、第九天 我趴在偏房一處隱蔽的房頂上張望鸽照。 院中可真熱鬧,春花似錦颠悬、人聲如沸矮燎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)诞外。三九已至,卻和暖如春灾票,著一層夾襖步出監(jiān)牢的瞬間峡谊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工刊苍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留既们,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓正什,卻偏偏與公主長(zhǎng)得像啥纸,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子埠忘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容