Django — Не может импортировать иностранные базы данных, если они не установлены по умолчанию

#python #django

#python #django

Вопрос:

У меня есть база bonds.db данных, которую я хотел бы импортировать в качестве альтернативной базы данных. Моя база данных по умолчанию database.sqlite3 . Моя проблема в том, что я не могу импортировать bonds.db , если не установлю ее в качестве базы данных по умолчанию.

Я импортирую его, набрав python manage.py inspectdb --database=bonds текст, и вставляю выходные данные в models.py новое приложение, которое я создал. Затем я печатаю python manage.py syncdb --database=bonds . Это работает безупречно, если база данных по умолчанию — bonds, но Django импортирует пустую базу данных, если bonds.db она не является базой данных по умолчанию.

Дайте мне знать, какая информация вам нужна.

Комментарии:

1. не могли бы вы поделиться своими настройками базы данных из settings.py файла?

2. Спасибо за ответ, но я решил его. Обратитесь к моему ответу ниже.

3. Отлично, спасибо за добавление ответа.

Ответ №1:

Я нашел ответ, и он очевиден: маршрутизация базы данных. Вам нужно создать routers.py файл и добавить его в свой settings.py :

 DATABASE_ROUTERS = ['myapp1.routers.name-of-your-routers.py-class',
                    'myapp2.routers.name-of-your-routers.py-class']
DATABASE_APPS_MAPPING = {'myapp1': 'mydb1', 
                         'myapp2': 'mydb2'}
  

У Djangosnippets есть routers.py файл: https://djangosnippets.org/snippets/2687 /

Вам нужно добавить атрибут, вызываемый in_db = 'desired-db' для Meta класса каждого класса в вашем models.py .