Django: Переход от нескольких баз данных к одной базе данных?
Я относительно новичок в Django (и в архитектуре веб-систем в целом) и ошибочно полагал, что создание проекта с отдельными базами данных для данных пользователей и данных основного приложения - хорошая идея. Изначально я создал два приложения, основное и пользовательское, с отдельными классами маршрутизаторов:
settings.py
DATABASES = {
"default": {
},
USERS_DATABASE: {
"ENGINE": "django.db.backends.postgresql",
"NAME": "postgres",
"USER": ...,
"PASSWORD": ...,
"HOST": "127.0.0.1",
"PORT": "5000",
},
CORE_DATABASE: {
"ENGINE": "django.db.backends.postgresql",
"NAME": "postgres",
"USER": ...,
"PASSWORD": ...,
"HOST": "127.0.0.1",
"PORT": "5000",
},
}
routers.py
class AuthRouter:
route_app_labels = {
"auth",
"contenttypes",
"sessions",
"admin",
}
...
class CoreRouter:
route_app_labels = {
"core",
}
...
Зная, что для нашего проекта нет необходимости использовать отдельные базы данных ядра и пользователей (и что это создаст нам больше проблем в будущем), я хотел бы перенести базу данных пользователей в базу данных ядра и назначить базу данных ядра базой данных по умолчанию. На данный момент есть только два пользователя, поэтому я не против потерять данные пользователей и воссоздать суперпользователя, если потребуется.
Однако перенос базы данных пользователей не кажется таким же простым, как редактирование settings.py и создание миграций. Редактирование файла settings.py для баз данных, чтобы он указывал на базу данных ядра, и запуск migrate для auth, admin, contenttypes или sessions ничего не дает. Есть ли способ заставить Django пересоздать таблицы для этих приложений (которые изначально были направлены в базу данных пользователей) в основной базе данных, чтобы отменить мое первоначальное решение использовать отдельные базы данных?
Edit: На самом деле, для меня не проблема потерять все данные в основной базе данных и начать с чистого листа. Но поскольку я новичок в Django, я не уверен, что мне нужно изменить в моем проекте, чтобы это было безопасно для меня. Я подозреваю, что для того, чтобы начать с чистого листа, мне нужно просто выполнить migrate {app} zero
для всех приложений, удалить все таблицы в основной базе данных и снова запустить migrate
.