Documentation développeur
Python
Mis à jour le 18 septembre 2026

Générer un UUID en Python

Générez, formatez, analysez et validez des UUID RFC 4122/9562 en Python avec le module standard natif uuid.

Python intègre la gestion des identifiants uniques universels directement dans sa bibliothèque standard via le module uuid. Aucune installation tierce (pip install) n'est requise pour générer des UUID v1, v3, v4 et v5.

Démarrage rapide#

Générez un UUID v4 aléatoire et cryptographiquement sûr en une ligne :

Python
1import uuid23# Génération d'un UUID aléatoire (version 4)4id_val = uuid.uuid4()56print(id_val)7# Résultat : 3d3b7d18-8f83-4a16-9b16-6415f33367f089print(type(id_val))10# Résultat : <class 'uuid.UUID'>

Formats et Représentations#

L'objet uuid.UUID propose des propriétés dédiées pour exporter l'identifiant selon vos besoins :

Python
1import uuid23u = uuid.uuid4()45# 1. Chaîne standard de 36 caractères avec tirets6canonique = str(u)7print("Standard :", canonique)89# 2. Chaîne hexadécimale compacte sans tirets (32 caractères)10hex_compact = u.hex11print("Hex :", hex_compact)1213# 3. Format URN14urn = u.urn15print("URN :", urn)1617# 4. Octets binaires (16 octets)18octets = u.bytes19print("Taille en octets :", len(octets))  # 162021# 5. Entier 128 bits22entier = u.int23print("Entier 128 bits :", entier)

Analyser et Valider un UUID#

Pour valider et convertir une chaîne entrante, interceptez l'exception ValueError :

Python
1import uuid23def est_uuid_valide(valeur: str) -> bool:4    try:5        uuid_obj = uuid.UUID(valeur)6        return uuid_obj.hex == valeur.replace("-", "").lower()7    except (ValueError, AttributeError, TypeError):8        return False910# Tests11print(est_uuid_valide("3d3b7d18-8f83-4a16-9b16-6415f33367f0"))  # True12print(est_uuid_valide("invalide"))                               # False

UUID v7 en Python#

Pour les versions actuelles de Python (3.9 à 3.13), le paquet uuid6 apporte le support d'UUID v7 ordonné par le temps :

Bash
1pip install uuid6
Python
1import uuid623# UUID v7 chronologique pour les index de base de données4id_v7 = uuid6.uuid7()5print("UUIDv7 :", id_v7)

Bonnes pratiques#

  1. Convertissez en chaîne pour JSON : json.dumps() ne sérialise pas nativement les objets uuid.UUID. Utilisez str(mon_uuid).
  2. Exploitez le type UUID natif en base de données : Avec SQLAlchemy et PostgreSQL, privilégiez postgresql.UUID(as_uuid=True).
  3. Sécurité SQL : Combinez toujours la validation de format avec des requêtes paramétrées pour prévenir les injections.

Références#

Implémenter UUID dans d'autres langages :