summaryrefslogtreecommitdiff
path: root/django/db/backends/sqlite3/_functions.py
diff options
context:
space:
mode:
authorLily Acorn <code@lilyf.org>2025-11-15 16:29:12 +0000
committerJacob Walls <jacobtylerwalls@gmail.com>2025-12-12 11:17:08 -0500
commitaccceec9493d08e19d59fa1a59f69c0fdf23bb13 (patch)
tree76fb22d06b9fa3074317a477b713c06fa68ddc12 /django/db/backends/sqlite3/_functions.py
parent8932a677258fbda34f24a1be6f426265148b0003 (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.py16
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