Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python UUID로 고유한 랜덤 ID 생성하기: uuid1()과 uuid4() 활용법

UUID(Universal Unique Identifier, 범용 고유 식별자)는 128비트 크기의 ID를 지원하는 파이썬 표준 라이브러리입니다. 이를 활용하면 객체마다 중복되지 않는 고유한 난수 ID를 손쉽게 생성할 수 있습니다.

UUID의 주요 장점

  • 랜덤 객체에 대해 전 세계적으로 유일한(random unique) ID를 생성할 수 있습니다.
  • 암호화(cryptography) 및 해싱(hashing) 응용 프로그램에서 안전하게 사용할 수 있습니다.
  • 문서, 주소 등 다양한 리소스에 대한 고유 식별자를 만들 때 활용할 수 있습니다.

방법 1: uuid1() 함수 사용하기

uuid1()은 호스트의 MAC 주소와 현재 타임스탬프를 기반으로 UUID를 생성합니다.

예제 코드

import uuid
print("uuid1()으로 생성한 랜덤 ID : ", end="")
print(uuid.uuid1())

실행 결과

uuid1()으로 생성한 랜덤 ID : 4adeede2-e5d8-11e8-bd27-185e0fd4f8b3

uuid1()의 다양한 표현 방식

bytes — ID를 16바이트 문자열 형태로 반환합니다.

int — ID를 128비트 정수 형태로 반환합니다.

hex — ID를 32자리 16진수 문자열 형태로 반환합니다.

uuid1()의 구성 요소

version — UUID의 버전 번호를 나타냅니다.

variant — UUID의 내부 레이아웃(배치 방식)을 결정합니다.

uuid1()의 필드 구성

time_low — ID의 첫 32비트를 나타냅니다.

time_mid — 그다음 16비트를 나타냅니다.

time_hi_version — 그다음 16비트를 나타냅니다.

clock_seq_hi_variant — 그다음 8비트를 나타냅니다.

clock_seq_low — 그다음 8비트를 나타냅니다.

node — 마지막 48비트를 나타냅니다.

time — ID의 시간(time) 구성 요소 필드를 나타냅니다.

clock_seq — 14비트 시퀀스 번호를 나타냅니다.

종합 예제 코드

import uuid

id = uuid.uuid1()

# uuid1()의 다양한 표현 방식
print("uuid1()의 다양한 표현 방식 : ")
print("bytes 표현 : ", end="")
print(repr(id.bytes))
print("int 표현 : ", end="")
print(id.int)
print("hex 표현 : ", end="")
print(id.hex)
print("\n")

# uuid1()의 구성 요소
print("uuid1()의 구성 요소 : ")
print("UUID 버전 : ", end="")
print(id.version)
print("UUID 변형(variant) : ", end="")
print(id.variant)
print("\n")

# uuid1()의 필드
print("uuid1()의 필드 : ")
print("UUID 필드 : ", end="")
print(id.fields)
print("\n")

# uuid1()의 시간 구성 요소
print("uuid1()의 시간 구성 요소 : ")
print("Time component : ", end="")
print(id.node)

실행 결과

uuid1()의 다양한 표현 방식 :
bytes 표현 : b'\x1a\xd2\xa7F\xe5\xe4\x11\xe8\xbd\x9c\x18^\x0f\xd4\xf8\xb3'
int 표현 : 35653703010223099234452630771665795251
hex 표현 : 1ad2a746e5e411e8bd9c185e0fd4f8b3

uuid1()의 구성 요소 :
UUID 버전 : 1
UUID 변형(variant) : specified in RFC 4122

uuid1()의 필드 :
UUID 필드 : (450012998, 58852, 4584, 189, 156, 26792271607987)

uuid1()의 시간 구성 요소 :
Time component : 26792271607987

방법 2: uuid4() 함수 사용하기

uuid4()는 무작위(random) 방식으로 UUID를 생성합니다. 시간이나 MAC 주소에 의존하지 않기 때문에 보안성이 중요한 경우에 널리 사용됩니다.

예제 코드

import uuid

id = uuid.uuid4()

# uuid4()로 생성한 ID 출력
print("uuid4()로 생성한 ID : ", end="")
print(id)

실행 결과

uuid4()로 생성한 ID : 21764219-e3d9-4bd3-a768-0bbc6e376bc0

정리

파이썬의 uuid 모듈을 사용하면 단 몇 줄의 코드로 고유한 ID를 생성할 수 있습니다. 호스트 정보와 시간 기반의 uuid1(), 완전한 난수 기반의 uuid4() 중 용도에 맞는 방식을 선택해 사용하면 됩니다. 일반적으로 보안이나 충돌 방지가 중요한 서비스에서는 uuid4()가 권장됩니다.