“我如何阻止Django”;python manage.py syndb“;将表格添加到多个DB';设置中有什么?

“我如何阻止Django”;python manage.py syndb“;将表格添加到多个DB';设置中有什么?,python,django,syncdb,Python,Django,Syncdb,我在settings.py中配置了两个数据库,一个是默认数据库,另一个叫做“local_mysql” 我想创建一个模型,这样当我执行python manage.py syncdb时,它只填充在local\u mysql数据库中。这怎么可能 我找不到太多的搜索内容。您需要实现一个数据库路由器,详细内容见: 如果您不希望每个应用程序都同步到 对于特定的数据库,您可以定义一个实现 限制特定模型可用性的策略 要定义路由器,它只是一个包含一些方法的类: class MyRouter(object):

我在settings.py中配置了两个数据库,一个是默认数据库,另一个叫做“local_mysql”

我想创建一个模型,这样当我执行
python manage.py syncdb
时,它只填充在
local\u mysql
数据库中。这怎么可能


我找不到太多的搜索内容。

您需要实现一个数据库路由器,详细内容见:

如果您不希望每个应用程序都同步到 对于特定的数据库,您可以定义一个实现 限制特定模型可用性的策略

要定义路由器,它只是一个包含一些方法的类:

class MyRouter(object):

    def db_for_read(self, model, **hints):
        if model._meta.app_label == 'yourappname':
            return 'local_mysql'
        return None

    def db_for_write(self, model, **hints):
        return self.db_for_read(model, **hints)

    def allow_relation(self, obj1, obj2, **hints):
        if obj1._meta.app_label == 'yourappname' or \
           obj2._meta.app_label == 'yourappname':
           return True
        return None

    def allow_migrate(self, db, model):
        if db == 'local_mysql':
            return model._meta.app_label == 'yourappname'
        elif model._meta.app_label == 'yourappname':
            return False
        return None
将该类放在一个名为
routers.py
的文件中,该文件与应用程序的
views.py
位于同一位置,您要为其重定向数据库

然后,在
settings.py
中添加以下内容:

DATABASE_ROUTERS = ['yourappname.routers.MyRouter']

您需要不同的设置文件。在“设置”下添加local.py。然后运行python

manage.py syncdb --settings=project.settings.local
请参见此处投票最多的答案: