uuidを生成する

分散システム上のキー等で最近何かと使うことが多くなったuuid、Pythonで生成する方法について学習しましょう。

uuid

標準ライブラリでその名もずばりuuidというモジュールがあります。バージョンごとに、uuidX(Xはバージョン番号)というメソッドがありますのでこれで生成することが可能です。

uuid バージョン1/4

特に説明は不要かと思いますが、以下の通りメソッドを実行するとuuidを得ることができます。戻り値の型はuuid.UUIDとなります。文字列に変換する場合はstr関数を使用します。

import uuid

uuid.uuid1()
# UUID('ab88ca48-f926-11e7-ac56-7429af3f3f5b')

uuid.uuid4()
# UUID('784d08a8-f39a-4ba0-ac13-6440688b54fd')

# 文字列で取得する場合
str(uuid.uuid1())
# '1f749568-f927-11e7-ac56-7429af3f3f5b'

なお、uuid.UUIDオブジェクトは属性として、16進数文字列やバージョンを持っています。

import uuid

uuid_obj = uuid.uuid1()

# 16進数文字列
uuid_obj.hex
# 8e1049eaf92711e7ac567429af3f3f5b


# バージョン
uuid_obj.version
# 1
# 

バージョン 3/5

uuid3、uuid5の場合、第1引数に名前空間の種類、ドメイン名などのユニーク文字列は第2引数に指定します。

import uuid

uuid.uuid3(uuid.NAMESPACE_DNS, "ambitious-engineer.com")
# UUID('e23d41c3-1be2-3de2-862c-e59a1682c95d')
# 

FQDN、URLを名前空間で指定する場合、以下のとおりとなります。

  • uuid.NAMESPACE_DNS:FQDN
  • uuid.NAMESPACE_URL:URL