uuid — Универсальные уникальные идентификаторы

Модуль uuid предоставляет все необходимое для генерации безопасных и уникальных ID (идентификаторов). Эти идентификаторы полезны для назначения ключей в базах данных, названия файлов на сервере или создания сессий.

Самый популярный тип — UUIDv4 (он полностью случайный).

import uuid

Случайная генерация (UUID 4)

Версия 4 гарантирует практически нулевой шанс случайной коллизии (совпадения двух ID).

import uuid

# Генерация UUIDv4
user_id = uuid.uuid4()

print(user_id)
# Выведет: df593d67-4ad3-468b-ac21-6ac38ab4cdb4

# Удобные конвертации
print(user_id.hex)  # Без дефисов: df593d674ad3468bac216ac38ab4cdb4
print(type(user_id))# <class 'uuid.UUID'> - это объект, не строка!
print(str(user_id)) # Превратить в обычную строку

Генерация по данным (UUID 5 и 3)

Эти версии генерируют всегда один и тот же UUID для одних и тех же входящих данных, скрещивая ваше секретное пространство имен и строку. (Версия 5 использует более безопасный SHA-1, в отличие от устаревшего MD5 в версии 3).

import uuid

namespace = uuid.NAMESPACE_URL
name = 'https://python.org'

# При каждом запуске скрипта этот ID будет одинаковым
static_id = uuid.uuid5(namespace, name)
print(static_id)

Полный справочник API (API Reference)

Основные генераторы

Функция Описание
uuid.uuid1() Генерирует UUID на основе MAC-адреса компьютера и текущего времени часов. (Считается угрозой приватности, так как раскрывает MAC).
uuid.uuid3(ns, name) Генерирует статический ID по MD5 хешу имени. (Устарел).
uuid.uuid4() Абсолютно случайный, мощный 128-битный UUID. Главная функция.
uuid.uuid5(ns, name) Генерирует статический ID на основе современного SHA-1.

Объект UUID

Ниже представлены атрибуты сгенерированного объекта (например: obj = uuid.uuid4()).

Атрибут/Метод Описание
UUID(hex='...') Конструктор. Позволяет взять готовую строку с хешем и превратить её в Python UUID-объект.
UUID.bytes Возвращает сырую строку длиной в 16 байт.
UUID.hex Классический хеш: 32 шестнадцатеричных символа (без дефисов).
UUID.int Целое математическое число длиной в 128 бит.
UUID.version Возвращает цифру, показывающую версию (например, 4).