Python 在多个数据库中创建同一模型-Django
正如标题所示,我感兴趣的是如何在多个数据库中创建相同的模型。我有以下场景:每个用户都有自己的数据库(这是简化的情况),当用户向他的应用程序添加新模块时,我希望能够为他添加的模块创建db表。 我目前的想法是创建动态模型,添加定制的app_标签,然后使用数据库路由器在相应的数据库中创建模型 有没有更简单的方法来获得这个Python 在多个数据库中创建同一模型-Django,python,django,django-models,Python,Django,Django Models,正如标题所示,我感兴趣的是如何在多个数据库中创建相同的模型。我有以下场景:每个用户都有自己的数据库(这是简化的情况),当用户向他的应用程序添加新模块时,我希望能够为他添加的模块创建db表。 我目前的想法是创建动态模型,添加定制的app_标签,然后使用数据库路由器在相应的数据库中创建模型 有没有更简单的方法来获得这个 提前谢谢 您应该查看syncdb命令-您可以这样通过编程方式调用它: from django.core.management import call_command call_com
提前谢谢 您应该查看syncdb命令-您可以这样通过编程方式调用它:
from django.core.management import call_command
call_command('syncdb')
在您的情况下,您将希望对在命令行中传递的任何选项使用命名参数:
call_command('syncdb', noinput=True, database=user_db)
希望有帮助
还可以检查一下:使用带有不同参数的migrate命令。例如,如果数据库别名是主别名和辅助别名 这样做
python manage.py migrate --database=primary
python manage.py migrate --databases=secondary
谢谢你的回复。事实上,我也考虑了这个选项,但我的问题是如何更改将添加模型的数据库?它是同一个型号,但据添加该模块的用户说,它将被同步到不同的数据库中。我不确定我是否理解这个问题。调用_命令的数据库参数将包含要将模型添加到的数据库(来自settings.DATABASES)的名称,就像使用syncdb命令一样。是的,它包含数据库的名称,但我的问题是如何告诉模型我希望它在运行时从settings.DATABASES同步到一个数据库中。我最终成功地解决了这个问题,通过使用sql_create_model和直接执行原始sql解决了这个问题。使用call_命令(如上)可以做到这一点-它允许您在运行时针对数据库调用syncdb(在call to call_命令中指定数据库)。在您看来,这是在运行时发生的,等等。你为什么有这样的设置?你想做多租户吗?如果是这样,有一个更简单的方法;例如,嗨!是的,这就是我想做的。我使用独立的方法,我的问题是我有一些常见的模型(例如:CustomUsers等),我希望能够在单独的数据库中为这些模型赋予生命。