diff options
| author | Lily Acorn <code@lilyf.org> | 2025-11-15 16:29:12 +0000 |
|---|---|---|
| committer | Jacob Walls <jacobtylerwalls@gmail.com> | 2025-12-12 11:17:08 -0500 |
| commit | accceec9493d08e19d59fa1a59f69c0fdf23bb13 (patch) | |
| tree | 76fb22d06b9fa3074317a477b713c06fa68ddc12 /django/db/backends/sqlite3/_functions.py | |
| parent | 8932a677258fbda34f24a1be6f426265148b0003 (diff) | |
Fixed #36735 -- Added UUID4 and UUID7 database functions.
Co-authored-by: Mariusz Felisiak <felisiak.mariusz@gmail.com>
Diffstat (limited to 'django/db/backends/sqlite3/_functions.py')
| -rw-r--r-- | django/db/backends/sqlite3/_functions.py | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/django/db/backends/sqlite3/_functions.py b/django/db/backends/sqlite3/_functions.py index b38e06eec2..aa4100e83f 100644 --- a/django/db/backends/sqlite3/_functions.py +++ b/django/db/backends/sqlite3/_functions.py @@ -27,6 +27,7 @@ from math import ( tan, ) from re import search as re_search +from uuid import uuid4 from django.db.backends.utils import ( split_tzname_delta, @@ -35,6 +36,10 @@ from django.db.backends.utils import ( ) from django.utils import timezone from django.utils.duration import duration_microseconds +from django.utils.version import PY314 + +if PY314: + from uuid import uuid7 def register(connection): @@ -81,6 +86,9 @@ def register(connection): connection.create_aggregate("VAR_POP", 1, VarPop) connection.create_aggregate("VAR_SAMP", 1, VarSamp) connection.create_aggregate("ANY_VALUE", 1, AnyValue) + connection.create_function("UUIDV4", 0, _sqlite_uuid4) + if PY314: + connection.create_function("UUIDV7", 0, _sqlite_uuid7) # Some math functions are enabled by default in SQLite 3.35+. sql = "select sqlite_compileoption_used('ENABLE_MATH_FUNCTIONS')" if not connection.execute(sql).fetchone()[0]: @@ -496,6 +504,14 @@ def _sqlite_tan(x): return tan(x) +def _sqlite_uuid4(): + return uuid4().hex + + +def _sqlite_uuid7(): + return uuid7().hex + + class ListAggregate(list): step = list.append |
