У меня есть типичный проект Django с одной первичной базой данных, где я храню все необходимые мне данные.Модели Django с внешними DB
Предположим, что есть еще одна БД с некоторой дополнительной информацией. Эта БД напрямую не связана с моим проектом Django, поэтому давайте предположим, что у меня даже нет элемента управления под ним.
Проблема в том, что я знаю, нужно ли мне создавать и поддерживать модель для этой внешней БД, чтобы я мог использовать ORM Django. Или, может быть, лучшим решением является использование raw SQL для извлечения данных из внешней БД, а затем использование этого ifo для фильтрации данных из первичной БД с использованием ORM или непосредственно в представлениях.
Решение с созданием модели выглядит вполне нормально, но тот факт, что БД не является частью моего проекта, означает, что я не знаю о возможных изменениях схемы и, похоже, это плохая практика.
Таким образом, в конце концов, если у меня есть какие-то внешние ресурсы, такие как БД, которые не связаны с, но необходимые для моего проекта я должен:
- Try для создания моделей Джанго для них
- Используйте необработанный SQL, чтобы получить info от внешнего БД, а затем использовать его для фильтрации данных из первичной БД с помощью ОРМ, а также с использованием данных непосредственно в представлениях, если необходимо
- Использовать необработанный SQL как для первичной, так и для внешней БД, где они пересекаются в логике приложения
Несколько вопросов: - Есть ли API, который вы могли бы использовать для доступа к данным, которые вам нужны? Если да, это может быть жизнеспособным решением для получения необходимого вам - Ожидаете ли вы, что данные в этой базе данных будут часто меняться, и вам нужно быть в курсе этих изменений? Если нет, вы можете просто создать свою собственную базу данных с дампом данных, которые вас интересуют, и поместить их в DjangoModel. –
На самом деле это мое внешнее приложение. Но я решил задать более широкий вопрос. Дамп не является решением проблемы. Данные часто меняются. Например, есть две биллинговые панели, и у вас есть один METAbilling, который собирает данные из них. Например, эти два биллинга - это whmcs и awbs. Я понятия не имею, как они собираются изменить схему БД. – Glueon