Django - 多个数据库

时间:2013-05-01 23:00:19

标签: python django python-2.7 django-models django-orm

所以我对整个Django数据库有些新意,也许我还没有完全理解Django路由器在这里谈到的: https://docs.djangoproject.com/en/dev/topics/db/multi-db/#database-routers 但是对于我的生活,我无法弄清楚如何将两个数据库连接在一起。也许是因为我的设置不同?这两个数据库是单独的Django项目文件夹,并且都有单独的Postgre数据库。我想也许问题来自于他们在不同的文件夹中而我没有正确地包含路径名?

这就是我现在所拥有的:

settings.py:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2', 
        'NAME': 'ClothesWashers',
        'USER': '',
        'PASSWORD': '',
        'HOST': '',
        'PORT': '',
        },
    'RECS': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'RECS',
        'USER': '',
        'PASSWORD': '',
        'HOST': '',
        'PORT': '',
        }
}

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.admin',
    'django_extensions',
    'ClothesWasher_Purchaser',
    )

DATABASE_ROUTERS = ['ClothesWashers.db_routers.RECS_Router',]

db_routers.py:

class RECS_Router(object):
    def db_for_read(self, model, **hints):
        if model._meta.app_label == 'RECS_Data':
            return 'RECS'
        return 'default'

我想要做的就是通过做这样的事情来调用RECS数据库中的RECS_Data应用程序,以便我可以从中读取:

import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'ClothesWashers.settings'
from RECS_Data.models import RecsData
g = RecsData._meta.fields

感谢任何愿意帮助我的人!

1 个答案:

答案 0 :(得分:1)

我猜您可以使用。

读取辅助数据库

试试这样。

i.e RecsData.using("RECS")._meta.fields

有关详情,请参阅https://docs.djangoproject.com/en/dev/topics/db/multi-db/#manually-selecting-a-database