문제

플랫폼 독립적 인 Python에서 GUID를 어떻게 만들려면? Windows에서 ActivePython을 사용하는 방법이 있다고 들었지만 COM을 사용하기 때문에 Windows입니다. 일반 파이썬을 사용하는 방법이 있습니까?

도움이 되었습니까?

해결책

Python 2.5 이상의 UUID 모듈은 RFC 호환 UUID 생성을 제공합니다. 자세한 내용은 모듈 문서 및 RFC를 참조하십시오. [의 뜻원천]

문서 :

예제 (2 및 3 작업) :

>>> import uuid
>>> uuid.uuid4()
UUID('bd65600d-8669-4903-8a14-af88203add38')
>>> str(uuid.uuid4())
'f50ec0b7-f960-400d-91f0-c42a6d44e3d0'
>>> uuid.uuid4().hex
'9fe2c4e93f654fdbb24c02b15259716c'

다른 팁

Python 2.5 이상을 사용하는 경우 UUID 모듈 이미 Python 표준 분포에 포함되어 있습니다.

전:

>>> import uuid
>>> uuid.uuid4()
UUID('5361a11b-615c-42bf-9bdb-e2c3790ada14')

복사 : https://docs.python.org/2/library/uuid.html (게시 된 링크가 활성화되지 않았으므로 계속 업데이트

>>> 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')

데이터베이스 유형 작업의 임의의 키로 안내서를 사용합니다.

대시와 여분의 캐릭터가있는 16 진수 형태는 나에게 불필요하게 오래 보입니다. 그러나 나는 또한 16 진수를 나타내는 문자열이 '+', '='등과 같은 일부 상황에서 문제를 일으킬 수있는 문자를 포함하지 않는다는 점에서 매우 안전하다는 것을 좋아합니다.

16 진수 대신 URL-SAFE Base64 문자열을 사용합니다. 다음은 UUID/Guid 사양을 준수하지 않습니다 (필요한 양의 무작위성을 갖는 것 외에는).

import base64
import uuid

# get a UUID - URL safe, Base64
def get_a_uuid():
    r_uuid = base64.urlsafe_b64encode(uuid.uuid4().bytes)
    return r_uuid.replace('=', '')

이 기능은 완전히 구성 가능하며 지정된 형식을 기반으로 고유 한 UID를 생성합니다.

eG :- [8, 4, 4, 4, 12], 이것은 언급 된 형식이며 다음과 같은 UUID를 생성합니다.

lxoynyxe-7hbq-cajt-dsdu-pdaht56cmewi

 import random as r

 def generate_uuid():
        random_string = ''
        random_str_seq = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
        uuid_format = [8, 4, 4, 4, 12]
        for n in uuid_format:
            for i in range(0,n):
                random_string += str(random_str_seq[r.randint(0, len(random_str_seq) - 1)])
            if n != 12:
                random_string += '-'
        return random_string

모델 또는 고유 필드의 기본 키를 위해 UUID를 전달 해야하는 경우 코드 아래에 UUID 객체를 반환합니다.

 import uuid
 uuid.uuid4()

UUID를 UUID의 매개 변수로 전달 해야하는 경우 아래 코드와 같은 작업을 수행 할 수 있습니다.

import uuid
str(uuid.uuid4())

UUID의 16 진수를 원한다면 아래를 수행 할 수 있습니다.

import uuid    
uuid.uuid4().hex
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top