diff --git a/db_multitenant/db/backends/mysql/base.py b/db_multitenant/db/backends/mysql/base.py index b41a47d..373bd47 100644 --- a/db_multitenant/db/backends/mysql/base.py +++ b/db_multitenant/db/backends/mysql/base.py @@ -1,9 +1,33 @@ +# Copyright (c) 2013, mike wakerly +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. Redistributions in binary +# form must reproduce the above copyright notice, this list of conditions and +# the following disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + from importlib import import_module import logging import time from django.core.exceptions import ImproperlyConfigured +from django.conf import settings from db_multitenant.threadlocal import MultiTenantThreadlocal from db_multitenant.utils import update_database_from_env @@ -35,7 +59,9 @@ def _cursor(self): update_database_from_env(super(DatabaseWrapper, self).get_connection_params()) db_name = self.threadlocal.get_db_name() if not db_name: - raise ImproperlyConfigured('db_name not set at cursor create time') + dbname = settings.DATABASES['default']['NAME'] + LOGGER.debug('dbname not set at cursor create time, using default database name: "{}".'.format(dbname)) + #raise ImproperlyConfigured('db_name not set at cursor create time') # Cache the applied db_name as "mt_db_name" on the connection, avoiding # an extra execute() if already set. Importantly, we assume no other diff --git a/mapper_examples/mysql_hostname_tenant_mapper.py b/mapper_examples/mysql_hostname_tenant_mapper.py index 23b3376..127341a 100644 --- a/mapper_examples/mysql_hostname_tenant_mapper.py +++ b/mapper_examples/mysql_hostname_tenant_mapper.py @@ -18,8 +18,8 @@ def get_tenant_name(self, request): return hostname.split('.')[0] def get_db_name(self, request, tenant_name): - return 'tenant-%s' % tenant_name + return tenant_name def get_cache_prefix(self, request, tenant_name, db_name): """The arguments db_name and tenant_name are provided by the methods of this TenantMapper""" - return 'tenant-%s' % tenant_name + return tenant_name