【问题标题】:Django - Multiple DatabasesDjango - 多个数据库
【发布时间】:2013-04-26 00:30:29
【问题描述】:

所以我对整个 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

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

【问题讨论】:

  • “这两个数据库是独立的 Django 项目文件夹并且都有独立的 Postgre 数据库”是什么意思
  • 我有一个名为 RECS 的 Django 项目,它有一个关联的 postgres 数据库(称为 RECS)和一个名为 RECS_Data 的应用程序。我现在正在尝试制作一个完全独立的 Django 项目,称为 ClothesWashers,它也有自己的 postgres 数据库。基本上,我想做的就是从 RECS 数据库中读取数据并将数据放入 ClothesWashers 数据库中。两个项目文件夹都在一个名为“Django Projects”的文件夹中。

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


【解决方案1】:

我猜你可以使用 using 读取辅助数据库。

像这样试试。

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

更多信息请参考这里https://docs.djangoproject.com/en/dev/topics/db/multi-db/#manually-selecting-a-database

【讨论】:

  • 感谢本次问答。关于使用“多个数据库”的主要 Django 文档实际上是关于使用“多个 RDBMS 实例”。换句话说,以某种顺序轮询故障转移或冗余数据源以实现可靠性或负载平衡。一个需要从字面上查询两个数据库的项目呢? Django 应用程序模型以一个项目、一个数据库、许多应用程序、许多表为中心。如果你是从头开始一个 Django 应用程序,当然可以。但是如果你需要一个 GUI 来帮助加入/集成现有的数据库,这个“using()”特性就非常重要了。谢谢!
  • @IcarusNM 你是对的。两个完全独立的数据库的用例在 Django 多数据库实现中没有涉及。我仍在寻找解决方案,我正在考虑将项目一分为二,或者将 SQLAlchemy 用于其中一个数据库。
猜你喜欢
  • 2010-12-24
  • 2014-09-17
  • 2019-02-22
  • 2011-12-29
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多