Django DB router,不使用2个不同的数据库(mySQL、PostgreSQL)

2024-09-30 18:15:29 发布

您现在位置:Python中文网/ 问答频道 /正文

本地_oleg.py公司以下内容:

from local import *  # noqa

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'schema1',
        'USER': 'postgres',
        'PASSWORD': 'zazaking',
        'HOST': 'localhost',
        # 'PORT': '',
        # 'OPTIONS': {'autocommit': True},
    },
    'legacy': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'legact_db',
        'USER': 'root',
        'HOST': '127.0.0.1',
        'PASSWORD': '',
    }

}

DATABASE_ROUTERS = ['.integrationRouter']

在集成路由器.py以下内容:

^{pr2}$

运行:python manage.py shell_plus --settings=settings.local_oleg

在外壳中:

>>> a = Users.objects.all()
>>> a
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/home/oleg/.virtualenvs/tomigo_core/local/lib/python2.7/site-packages/django/db/models/query.py", line 71, in __repr__
    data = list(self[:REPR_OUTPUT_SIZE + 1])
  File "/home/oleg/.virtualenvs/tomigo_core/local/lib/python2.7/site-packages/django/db/models/query.py", line 96, in __iter__
    self._fetch_all()
  File "/home/oleg/.virtualenvs/tomigo_core/local/lib/python2.7/site-packages/django/db/models/query.py", line 854, in _fetch_all
    self._result_cache = list(self.iterator())
  File "/home/oleg/.virtualenvs/tomigo_core/local/lib/python2.7/site-packages/django/db/models/query.py", line 166, in iterator
    if connections[self.db].features.supports_select_related:
  File "/home/oleg/.virtualenvs/tomigo_core/local/lib/python2.7/site-packages/django/db/models/query.py", line 817, in db
    return self._db or router.db_for_read(self.model)
  File "/home/oleg/.virtualenvs/tomigo_core/local/lib/python2.7/site-packages/django/db/utils.py", line 239, in _route_db
    for router in self.routers:
  File "/home/oleg/.virtualenvs/tomigo_core/local/lib/python2.7/site-packages/django/utils/functional.py", line 49, in __get__
    res = instance.__dict__[self.func.__name__] = self.func(instance)
  File "/home/oleg/.virtualenvs/tomigo_core/local/lib/python2.7/site-packages/django/db/utils.py", line 230, in routers
    router = import_by_path(r)()
  File "/home/oleg/.virtualenvs/tomigo_core/local/lib/python2.7/site-packages/django/utils/module_loading.py", line 21, in import_by_path
    module = import_module(module_path)
  File "/home/oleg/.virtualenvs/tomigo_core/local/lib/python2.7/site-packages/django/utils/importlib.py", line 40, in import_module
    __import__(name)
ValueError: Empty module name

如果我将mySQL数据库定义为一个单独的默认数据库,那么一切都可以正常工作。在

如果需要,可以发布用户模型,尽管我不认为它是相关的。在


Tags: djangoinpycorehomedblibpackages