How to Use UUIDv7 in Python, Django and PostgreSQL
8 days ago
- #UUIDv7
- #PostgreSQL
- #Django
- UUIDv7 provides time-ordered identifiers, improving index locality and reducing random writes compared to UUIDv4.
- Python 3.14 includes built-in support for UUIDv7 via `uuid.uuid7`, allowing client-side generation without database dependency.
- PostgreSQL 18 introduces native functions `uuidv7` and `uuid_extract_timestamp`, enabling server-side UUID generation and timestamp extraction.
- Django 5.2 integrates smoothly with UUIDv7 using `db_default` for PostgreSQL-generated UUIDs and `GeneratedField` for timestamp extraction.
- UUIDv7 is ideal for internal use but should be masked (e.g., with UUIDv47) in public APIs to avoid exposing creation timestamps.
- UUIDv7 is stable and supported in Python 3.14, Django 5.2, and PostgreSQL 18 without requiring custom fields or extensions.