如何在运行时动态地为每个租户创建一个新数据库。
所有示例都硬编码到设置文件中。但是当新租户 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。