UUID UUID Generator

Бесплатно · Без регистрации · Без установки

UUID в Python

В стандартной библиотеке есть всё: uuid.uuid4() для случайного идентификатора, uuid.uuid7() для упорядоченного по времени в Python 3.14 и новее и uuid.uuid5(), когда один и тот же вход должен давать одно и то же значение.

  • Только стандартная библиотека
  • v1–v5 везде, v6–v8 с 3.14
  • Без зависимостей

Генератор UUID v4

v4
От 1 до 1000.
Форматирование

Результат 0

    Создаётся локально через Web Crypto API — данные не покидают ваш браузер. Быстро: Ctrl + Enter — Обновлено

    Что такое UUID в Python

    Импортируйте модуль uuid — и на любой поддерживаемой версии Python доступны четыре генератора: uuid4() (случайный, обычный выбор для первичного ключа), uuid1() (время плюс адрес узла машины: может выдать MAC-адрес и раскрывает момент создания) и детерминированная пара uuid3() и uuid5(), вычисляющая хэш пространства имён и имени по MD5 или SHA-1.

    В Python 3.14 добавились версии RFC 9562: uuid6(), uuid7() и uuid8(), а также константы uuid.NIL и uuid.MAX и параметр --count у командной строки модуля. Для новых таблиц чаще всего нужен v7: он содержит 48-битную метку времени Unix в миллисекундах и счётчик, поэтому значения сортируются по порядку создания, а вставки не разбрасываются по индексу. На более старой версии ту же роль играет пакет uuid6 или uuid-utils.

    Как использовать

    1. Импортируйте модуль и вызовите uuid.uuid4() — для большинства задач этого достаточно.
    2. В Python 3.14+ используйте uuid.uuid7(), если значения попадут в индексируемый столбец.
    3. Используйте uuid.uuid5(namespace, name), когда одинаковый вход должен давать одинаковый UUID на любой машине.

    Сценарии

    • Первичные ключи: v4 для случайных, v7 для больших таблиц, где важен порядок вставки.
    • Идемпотентные конвейеры: v5 из URL или бизнес-ключа делает повторный запуск воспроизводимым.
    • Тестовые данные: детерминированные идентификаторы сохраняют стабильность проверок.

    Сравнение UUID в Python с другими форматами

    ВариантКогда использовать
    uuid4()Случайный, 122 бита энтропии. Выбор по умолчанию.
    uuid7()Упорядочен по времени, RFC 9562. Python 3.14 и новее.
    uuid1()Время плюс node. Раскрывает адрес оборудования; избегайте в новом коде.
    uuid5()Детерминированный SHA-1 от пространства имён и имени. Воспроизводим везде.

    Примеры кода

    Случайный (любая версия)

    import uuid
    
    print(uuid.uuid4())                 # 550e8400-e29b-41d4-a716-446655440000
    print(str(uuid.uuid4()), uuid.uuid4().hex, sep='\n')
    
    # Список идентификаторов для массовой вставки
    ids = [str(uuid.uuid4()) for _ in range(1000)]

    Упорядоченный (Python 3.14+)

    import uuid
    
    print(uuid.uuid7())        # 019535d9-3df7-79fb-b466-fa907fa17f9e
    print(uuid.uuid6())        # переставленный v1
    print(uuid.NIL, uuid.MAX)  # константы nil и max

    Детерминированный из имени

    import uuid
    
    # Одна и та же пара всегда даёт один UUID на любой машине
    uuid.uuid5(uuid.NAMESPACE_DNS, 'example.com')
    uuid.uuid5(uuid.NAMESPACE_URL, 'https://example.com/page')
    
    # uuid3() — устаревший вариант на основе MD5

    Командная строка

    # Python 3.12+: модуль запускается напрямую
    python -m uuid
    
    # Python 3.14+: можно выбрать версию и количество
    python -m uuid -u uuid7 -C 5

    Частые вопросы

    Какую функцию uuid выбрать?

    Для случайных идентификаторов — uuid4(), для индексируемых столбцов и сортировки по времени создания — uuid7(). От uuid1() в новом коде лучше отказаться: он раскрывает адрес узла и время создания значения.

    Безопасен ли uuid4() для секретов?

    Он создаётся системным CSPRNG, так что случайность надёжная, но UUID — не секрет: в нём нет аутентификации, а угадать его крайне сложно, но не невозможно. Никогда не используйте UUID как пароль, токен или мандат доступа.

    Как получить UUID v7 в Python 3.13 и старше?

    Стандартная библиотека получила uuid6/7/8 только в 3.14. На более старых версиях установите пакет uuid6 (uuid6.uuid7()) или uuid-utils, либо соберите v7 из time.time_ns() и os.urandom(), если зависимость недопустима.