Django中的多个数据库和多个模型

我有两个数据库和两个模型:管理员和用户。

我想将我的模型同步到两个数据库;admin模型到数据库A,用户模型到数据库B;

如果我将模型路径设置为INSTALLED_APPSsyncdb,则两个模型将同步到默认数据库。

如果我在syncdb命令中设置数据库,例如sync --database="B",则两个模型将同步到数据库B。

所以我的问题是,如何将两个模型同步到两个数据库?

回答:

我完全同意@alecxe使用数据库路由器。我目前正在使用一个管理界面来管理多个数据库。请注意,所有数据库的身份验证都存储在默认数据库中,因此当你执行syncdb(不带参数)时。

通用数据库路由器

我发现此实现非常灵活且有用。

Settings.py

# Define the database manager to setup the various projects

DATABASE_ROUTERS = ['manager.router.DatabaseAppsRouter']

DATABASE_APPS_MAPPING = {'mux_data': 't29_db',

'T50_VATC':'t50_db'}

DATABASES = {

'default': {

'ENGINE': 'django.db.backends.postgresql_psycopg2',

'NAME': 'fail_over',

'USER': 'SomeUser',

'PASSWORD': 'SomePassword',

'HOST': '127.0.0.1',

'PORT': '',

},

't29_db': {

'ENGINE': 'django.db.backends.postgresql_psycopg2',

'NAME': 'mux_stage',

'USER': 'SomeUser',

'PASSWORD': 'SomePassword',

'HOST': '127.0.0.1',

'PORT': '',

},

't50_db': {

'ENGINE': 'django.db.backends.postgresql_psycopg2',

'NAME': 't50_vatc',

'USER': 'SomeUser',

'PASSWORD': 'SomePassword',

'HOST': '127.0.0.1',

'PORT': '',

},

}

样本模型

# Create your models here.

class Card_Test(models.Model):

name = models.TextField(max_length=100)

description = models.TextField(max_length=200)

units = models.TextField(max_length=500)

result_tags = models.TextField(max_length=500)

class Meta:

app_label = 'mux_data'

def __unicode__(self):

return self.name

class Status_Type(models.Model):

status = models.CharField(max_length=25)

class Meta:

app_label = 'mux_data'

def __unicode__(self):

return self.status

以上是 Django中的多个数据库和多个模型 的全部内容, 来源链接: utcz.com/qa/427141.html

回到顶部