[Fixed]-How to use inspectdb for multiple mysql schemas in django?

1👍

Django needs to know how to reach each one of your databases so you won’t be able to avoid declaring them in the DATABASES setting. If your only concern is that you will loose readability, you may create a helper function to get rid of repetition.

For example:

def local_db(name):
    return {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': name,
        'USER': 'xxxx',
        'PASSWORD': 'xxxx',
        'HOST': 'localhost',
        'PORT': '3306',
    }

DATABASES = {
    'default': local_db('account'),
    'login': local_db('login'),
    # Etc.
}

If you want to inspect all databases at once, you may create a custom command to do so.

For example:

from django.conf import settings
from django.core.management.commands.inspectdb import Command as BaseCommand


class Command(BaseCommand):
    def handle(self, **options):
        for db_name in settings.DATABASES:
            options['database'] = db_name
            self.stdout.write('# Generated while inspecting database %s\n' % db_name)
            super().handle(**options)
👤aumo

Leave a comment