Loading django/core/cache/backends/db.py +1 −0 Original line number Diff line number Diff line Loading @@ -184,6 +184,7 @@ class DatabaseCache(BaseDatabaseCache): table = connections[db].ops.quote_name(self._table) cursor = connections[db].cursor() cursor.execute('DELETE FROM %s' % table) transaction.commit_unless_managed(using=db) # For backwards compatibility class CacheClass(DatabaseCache): Loading tests/regressiontests/cache/tests.py +8 −1 Original line number Diff line number Diff line Loading @@ -18,7 +18,7 @@ from django.core import management from django.core.cache import get_cache from django.core.cache.backends.base import (CacheKeyWarning, InvalidCacheBackendError) from django.db import router from django.db import router, transaction from django.http import (HttpResponse, HttpRequest, StreamingHttpResponse, QueryDict) from django.middleware.cache import (FetchFromCacheMiddleware, Loading Loading @@ -836,6 +836,13 @@ class DBCacheTests(BaseCacheTests, TransactionTestCase): interactive=False ) def test_clear_commits_transaction(self): # Ensure the database transaction is committed (#19896) self.cache.set("key1", "spam") self.cache.clear() transaction.rollback() self.assertEqual(self.cache.get("key1"), None) @override_settings(USE_TZ=True) class DBCacheWithTimeZoneTests(DBCacheTests): Loading Loading
django/core/cache/backends/db.py +1 −0 Original line number Diff line number Diff line Loading @@ -184,6 +184,7 @@ class DatabaseCache(BaseDatabaseCache): table = connections[db].ops.quote_name(self._table) cursor = connections[db].cursor() cursor.execute('DELETE FROM %s' % table) transaction.commit_unless_managed(using=db) # For backwards compatibility class CacheClass(DatabaseCache): Loading
tests/regressiontests/cache/tests.py +8 −1 Original line number Diff line number Diff line Loading @@ -18,7 +18,7 @@ from django.core import management from django.core.cache import get_cache from django.core.cache.backends.base import (CacheKeyWarning, InvalidCacheBackendError) from django.db import router from django.db import router, transaction from django.http import (HttpResponse, HttpRequest, StreamingHttpResponse, QueryDict) from django.middleware.cache import (FetchFromCacheMiddleware, Loading Loading @@ -836,6 +836,13 @@ class DBCacheTests(BaseCacheTests, TransactionTestCase): interactive=False ) def test_clear_commits_transaction(self): # Ensure the database transaction is committed (#19896) self.cache.set("key1", "spam") self.cache.clear() transaction.rollback() self.assertEqual(self.cache.get("key1"), None) @override_settings(USE_TZ=True) class DBCacheWithTimeZoneTests(DBCacheTests): Loading