Как использовать django shell в нескольких базах данных
Я пытаюсь запустить django shell
в разных базах данных. Но безуспешно. Я попытался переопределить django Command
и установить собственное соединение. Посмотрите на пример ниже. Но кажется, что это не работает. Есть мысли, как это сделать?
К сожалению, решение с Model.objects.using("db_name").....
не подходит для моего случая.
Код, который я пробовал:
class Command(DefaultShell):
def add_arguments(self, parser):
super().add_arguments(parser)
parser.add_argument(
'--database',
dest='database_name',
help='Specific database to run shell',
required=False,
)
def __set_database_for_current_connection(self, database_name: str):
connections.ensure_defaults(database_name)
connections.prepare_test_settings(database_name)
db = connections.databases[database_name]
backend = load_backend(db['ENGINE'])
return backend.DatabaseWrapper(db, database_name)
def handle(self, *args, **options):
database = options.get('database')
conn = self.__set_database_for_current_connection(database)
super().handle(*args, **options)
conn.close()