본문 바로가기

라이브러리

[파이썬] uuid 생성하는 방법

Python에서 UUID를 생성하는 방법은 uuid 모듈을 사용하는 것입니다. uuid 모듈은 Universally Unique Identifier(전 세계적으로 고유한 식별자)를 생성하기 위한 여러 함수와 클래스를 제공합니다.

 

1. 예제


UUID는 16바이트(128비트)의 값으로 표현되며, 다음과 같은 다양한 형식으로 표현할 수 있습니다.

문자열 형식: '123e4567-e89b-12d3-a456-426655440000'
16진수 형식: 0x123e4567e89b12d3a456426655440000
바이트 형식: b'\x12\x3e\x45\x67\xe8\x9b\x12\xd3\xa4\x56\x42\x66\x55\x44\x00\x00'
아래는 uuid 모듈을 사용하여 UUID를 생성하는 예제입니다.

 

import uuid

# 랜덤 UUID 생성
random_uuid = uuid.uuid4()
print(random_uuid)

# 이름 기반 UUID 생성
namespace_uuid = uuid.uuid5(uuid.NAMESPACE_DNS, 'example.com')
print(namespace_uuid)


위 예제에서 uuid4() 함수는 랜덤 UUID를 생성하고, uuid5() 함수는 이름 기반 UUID를 생성합니다. uuid5() 함수에는 생성할 UUID의 이름 공간(namespace)과 이름(value)을 인자로 전달해야 합니다. 위 예제에서는 DNS 이름 공간(namespace)을 사용하고, 이름(value)으로 'example.com'을 전달하였습니다.

UUID를 생성하는 방법에 대해 자세히 설명하였으니, 필요한 경우 위 예제를 참고하여 코드를 작성하시면 됩니다.

 

2. 중복 처리

 

UUID는 랜덤하게 생성되는 값이므로 중복될 가능성은 매우 적지만, 중복되는 경우에 대한 처리 방법은 다음과 같습니다.

UUID 생성 후 중복 여부 확인: UUID를 생성한 후에는 중복 여부를 확인하여 중복된 경우 다시 UUID를 생성하는 방법입니다. 이 방법은 중복될 가능성이 낮은 경우에 적합합니다.

 

import uuid

def generate_unique_id():
    unique_id = uuid.uuid4()
    while check_id_duplicate(unique_id):
        unique_id = uuid.uuid4()
    return unique_id

def check_id_duplicate(id):
    # 중복 여부 확인 로직
    return False # 중복되지 않은 경우
 
 # 중복되지 않는 UUID 생성
unique_id = generate_unique_id()


위 예제에서는 generate_unique_id() 함수를 사용하여 중복되지 않는 UUID를 생성합니다. generate_unique_id() 함수 내에서는 uuid.uuid4() 함수를 사용하여 UUID를 생성한 후, check_id_duplicate() 함수를 사용하여 중복 여부를 확인합니다. check_id_duplicate() 함수에서는 중복 여부를 확인하는 로직을 구현해야 합니다. 위 예제에서는 무조건 중복되지 않은 경우를 반환하도록 구현하였습니다.

UUID 생성 시 중복 방지 기능 사용: uuid 모듈에서는 중복 방지 기능이 있는 UUID 생성 함수도 제공합니다. uuid.uuid1() 함수는 현재 시간, MAC 주소 등을 기반으로 UUID를 생성하며, 이 때 중복 방지 기능을 사용할 수 있습니다. 이 방법은 중복될 가능성이 높은 경우에 적합합니다.

 

import uuid

# 중복 방지 기능 사용
unique_id = uuid.uuid1(node=get_mac_address())

 

위 예제에서는 uuid.uuid1() 함수를 사용하여 현재 시간, MAC 주소 등을 기반으로 UUID를 생성하면서, node 인자를 사용하여 중복 방지 기능을 활성화하였습니다. get_mac_address() 함수는 현재 시스템의 MAC 주소를 반환하는 함수로, node 인자로 전달합니다. 이 방법은 uuid.uuid1() 함수가 생성하는 UUID가 중복될 가능성을 줄이는 효과가 있습니다.