将单个模型路由到django中的备用数据库

时间:2015-11-04 22:13:40

标签: python django database routing

我在项目的设置文件夹中设置了两个数据库

'default': {
    'ENGINE': 'django.db.backends.sqlite3',
    'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
},
'foo': {
    'NAME': 'bar',
    'ENGINE': 'django.db.backends.mysql',
    'HOST': 'some.site.com',
    'USER': 'xxxxxx',
    'PASSWORD': 'xxxxxxxx'
}

我也设置了模型,其中一个是用

创建的
python manage.py inspectdb --database foo > tmp.py

这创建了我在foo中已经拥有的一些模型,所以我将它复制到我的模型文件夹中。但是,django正在尝试使用该模型的现有默认数据库,而是希望它转而路由到foo数据库。

在线查看如何完成此操作。帖子建议使用'数据库路由',但我找不到文档或适用于我或我理解的示例。

那么请问,设置单个模型以使用外部数据库的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

最简单的方法是手动选择数据库。 来自https://docs.djangoproject.com/en/1.8/topics/db/multi-db/#manually-selecting-a-database

>>> # This will run on the 'default' database.
>>> Author.objects.all()

>>> # So will this.
>>> Author.objects.using('default').all()

>>> # This will run on the 'other' database.
>>> Author.objects.using('other').all()

>>> my_object.save(using='legacy_users')

文档还有其他选项,请检查:https://docs.djangoproject.com/en/1.8/topics/db/multi-db/