Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在多个数据库中创建同一模型-Django_Python_Django_Django Models - Fatal编程技术网

Python 在多个数据库中创建同一模型-Django

Python 在多个数据库中创建同一模型-Django,python,django,django-models,Python,Django,Django Models,正如标题所示,我感兴趣的是如何在多个数据库中创建相同的模型。我有以下场景:每个用户都有自己的数据库(这是简化的情况),当用户向他的应用程序添加新模块时,我希望能够为他添加的模块创建db表。 我目前的想法是创建动态模型,添加定制的app_标签,然后使用数据库路由器在相应的数据库中创建模型 有没有更简单的方法来获得这个 提前谢谢 您应该查看syncdb命令-您可以这样通过编程方式调用它: from django.core.management import call_command call_com

正如标题所示,我感兴趣的是如何在多个数据库中创建相同的模型。我有以下场景:每个用户都有自己的数据库(这是简化的情况),当用户向他的应用程序添加新模块时,我希望能够为他添加的模块创建db表。 我目前的想法是创建动态模型,添加定制的app_标签,然后使用数据库路由器在相应的数据库中创建模型

有没有更简单的方法来获得这个


提前谢谢

您应该查看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等),我希望能够在单独的数据库中为这些模型赋予生命。