一意の識別子を作成するには、少なくとも 2 つの方法があります。
- 増分値 (通常は整数) を使用して、一意のキーを生成します
- 例を使用してください。UUID (Universally Unique Identifier)
増分識別子
最初の選択肢は明らかです。データベース レイヤーで実行する場合でも、アプリケーション レイヤーで実行する場合でも、最後に生成された識別子に関する情報を保存する必要があるため、それをインクリメントして別の識別子を生成できます。
解決策の例は次のとおりです。
>>> class Incremental(object):
_last_id = 0
def __init__(self):
Incremental._last_id += 1
self.id = Incremental._last_id
>>> class MyClass(Incremental):
def __repr__(self):
return 'MyClass with id=%s' % self.id
>>> a = MyClass()
>>> b = MyClass()
>>> c = MyClass()
>>> a, b, c
(MyClass with id=1, MyClass with id=2, MyClass with id=3)
他の人が提案したものを見てみましょう - 増分 ID に関しては、彼らの提案の方が適しているかもしれません。
普遍的に一意の識別子
2 番目の選択肢は、適切なタスクに適切なツールを使用することです。UUID は、一意の識別子を提供するように特別に設計されています。
これに使用できる標準の Python インストールにバンドルされているUUIDと呼ばれるモジュールがあります。
>>> import uuid
>>> str(uuid.uuid1())
'0baa65ea-b665-11e1-b721-b80305056d6a'
それらをハッシュに変換する
必要に応じて、両方の値を SHA-1 ハッシュに変換できます。
>>> import hashlib
>>> hashlib.sha1(str(1)).hexdigest()
'356a192b7913b04c54574d18c28d46e6395428ab'
>>> hashlib.sha1('0baa65ea-b665-11e1-b721-b80305056d6a').hexdigest()
'46bd64c5f4a81b90539d7302d030e01378ef6d6e'