Django создает базы данных динамически во время выполнения программы (а не направляет запросы в нужную БД)
как можно динамически создать новую базу данных для каждого арендатора во время выполнения программы.
Все примеры жестко закодированы в файле настроек. Но когда новый арендатор, t1, регистрируется, Я хотел бы создать новую базу данных для t1. И когда подключается t2, я хотел бы иметь возможность создать эту t2_db во время выполнения, без каких-либо миграций или перезапуска сервера. То есть, допустим, у нас есть база данных по умолчанию, в которой мы делаем миграции, (пустая), мы просто копируем ее для t1 и t2. Или есть способ запускать миграции без перезапуска сервера. Или люди просто перезапускают сервер (безумие, конечно). Если нет, то я думаю о docker.
Спасибо
Вы можете использовать функцию call_command
для выполнения миграций в указанной базе данных без необходимости перезапуска сервера. Более того, вы можете вызвать эту команду в процессе создания базы данных. Однако для динамической маршрутизации базы данных необходимо включить динамическое добавление соединений с базой данных. Важно отметить, что you'll need to add a database connection every time the server restarts
.
from django.core.management import call_command
# After creating db. Update the db connection.
settings.DATABASES[f"db_name"] = {
"ENGINE": "db_engine",
"NAME": "db_name",
"USER": "db_user",
"PASSWORD": "db_password",
"HOST": "db_host",
"PORT": "db_port",
}
call_command("migrate", database="db_name")
Этот код только для ознакомления. создайте отдельную функцию для динамического добавления db_connections.