Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

[1.5.x] Fixed #18575 -- Empty DATABASES should default to dummy backend

Thanks delormemarco@gmail.com for the report.

Backport of f1cc2be from master.
  • Loading branch information...
commit b4627bcabe6704c5bd1cbfb2d3a1421e05c29cd7 1 parent 95f3f0c
@claudep claudep authored
View
8 django/conf/global_settings.py
@@ -150,12 +150,8 @@
# Whether to send broken-link emails.
SEND_BROKEN_LINK_EMAILS = False
-# Database connection info.
-DATABASES = {
- 'default': {
- 'ENGINE': 'django.db.backends.dummy',
- },
-}
+# Database connection info. If left empty, will default to the dummy backend.
+DATABASES = {}
# Classes used to implement DB routing behavior.
DATABASE_ROUTERS = []
View
2  django/db/__init__.py
@@ -8,7 +8,7 @@
'IntegrityError', 'DEFAULT_DB_ALIAS')
-if DEFAULT_DB_ALIAS not in settings.DATABASES:
+if settings.DATABASES and DEFAULT_DB_ALIAS not in settings.DATABASES:
raise ImproperlyConfigured("You must define a '%s' database" % DEFAULT_DB_ALIAS)
connections = ConnectionHandler(settings.DATABASES)
View
9 django/db/utils.py
@@ -53,7 +53,14 @@ class ConnectionDoesNotExist(Exception):
class ConnectionHandler(object):
def __init__(self, databases):
- self.databases = databases
+ if not databases:
+ self.databases = {
+ DEFAULT_DB_ALIAS: {
+ 'ENGINE': 'django.db.backends.dummy',
+ },
+ }
+ else:
+ self.databases = databases
self._connections = local()
def ensure_defaults(self, alias):
View
11 tests/regressiontests/backends/tests.py
@@ -23,6 +23,17 @@
from . import models
+class DummyBackendTest(TestCase):
+ def test_no_databases(self):
+ """
+ Test that empty DATABASES setting default to the dummy backend.
+ """
+ DATABASES = {}
+ conns = ConnectionHandler(DATABASES)
+ self.assertEqual(conns[DEFAULT_DB_ALIAS].settings_dict['ENGINE'],
+ 'django.db.backends.dummy')
+
+
class OracleChecks(unittest.TestCase):
@unittest.skipUnless(connection.vendor == 'oracle',

0 comments on commit b4627bc

Please sign in to comment.
Something went wrong with that request. Please try again.