From d1c409b1ace95832efac809a08b01a8da7808985 Mon Sep 17 00:00:00 2001 From: Chris Clark Date: Thu, 1 Feb 2024 13:45:30 -0500 Subject: [PATCH 1/2] better DB handling --- constance/backends/database.py | 6 +++--- tests/backends/test_database.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/constance/backends/database.py b/constance/backends/database.py index 3b1ce30..592e3d9 100644 --- a/constance/backends/database.py +++ b/constance/backends/database.py @@ -76,11 +76,11 @@ class DatabaseBackend(Backend): else: value = None if value is None: - try: - value = self._model._default_manager.get(key=key).value - except (OperationalError, ProgrammingError, self._model.DoesNotExist): + match = self._model._default_manager.filter(key=key) + if len(match) == 0: pass else: + value = match.first().value if self._cache: self._cache.add(key, value) return value diff --git a/tests/backends/test_database.py b/tests/backends/test_database.py index 267892b..d6e0a94 100644 --- a/tests/backends/test_database.py +++ b/tests/backends/test_database.py @@ -16,7 +16,7 @@ class TestDatabase(StorageTestsMixin, TestCase): with self.assertNumQueries(5): self.config.INT_VALUE - # Read again + # Read with self.assertNumQueries(1): self.config.INT_VALUE From 6f0bb2310235c115c05c5219d69ecbc24e003482 Mon Sep 17 00:00:00 2001 From: Chris Clark Date: Thu, 1 Feb 2024 14:24:48 -0500 Subject: [PATCH 2/2] one query --- constance/backends/database.py | 11 ++++------- tests/backends/test_database.py | 2 +- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/constance/backends/database.py b/constance/backends/database.py index 592e3d9..68c01e2 100644 --- a/constance/backends/database.py +++ b/constance/backends/database.py @@ -68,19 +68,16 @@ class DatabaseBackend(Backend): def get(self, key): key = self.add_prefix(key) + value = None if self._cache: value = self._cache.get(key) if value is None: self.autofill() value = self._cache.get(key) - else: - value = None if value is None: - match = self._model._default_manager.filter(key=key) - if len(match) == 0: - pass - else: - value = match.first().value + match = self._model._default_manager.filter(key=key).first() + if match: + value = match.value if self._cache: self._cache.add(key, value) return value diff --git a/tests/backends/test_database.py b/tests/backends/test_database.py index d6e0a94..267892b 100644 --- a/tests/backends/test_database.py +++ b/tests/backends/test_database.py @@ -16,7 +16,7 @@ class TestDatabase(StorageTestsMixin, TestCase): with self.assertNumQueries(5): self.config.INT_VALUE - # Read + # Read again with self.assertNumQueries(1): self.config.INT_VALUE