@msnyastar

Доступ к одной БД с разных Django проектов?

Здравствуйте! Есть два проекта:
Проект-1 - PostgreSQL
Проект-2 - SQLite
Хочу из Проект-2 сделать запрос в PostgreSQL относящуюся к первому проекту.
Для этого в сеттингс Проект-2 добавил настройки дополнительной БД:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
                },
    'front': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'site_db_v2',
        'USER': 'alexandr',
        'PASSWORD': '*********',
        'HOST': '10.20.1.156',
        'PORT': '5432',
                }
            }

В Проект-2 добавил модель, как в первом проекте, только переопределил названия:
class Meta:
        app_label = 'exlorer'
        db_table = 'exlorer_btcaddresse'


На Проекте-2 никаких миграций по отношению к дополнительной базе('front' - основная для Проект-1) не проводил.
В итоге при запросе
BtcAddresses.objects.using('front').all()
Получаю ошибку:
Internal Server Error: /
Traceback (most recent call last):
  File "C:\PyProjects\Django_back\venv\lib\site-packages\django\db\backends\utils.py", line 86, in _execute
    return self.cursor.execute(sql, params)
psycopg2.errors.UndefinedTable: relation "exlorer_btcaddresse" does not exist
LINE 1: ...resse"."id", "exlorer_btcaddresse"."address" FROM "exlorer_b...
                                                             ^


The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\PyProjects\Django_back\venv\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
    response = get_response(request)
  File "C:\PyProjects\Django_back\venv\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:\PyProjects\Django_back\venv\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\PyProjects\Django_back\notification\monitor_events\views.py", line 11, in index
    print(BtcAddresses.objects.using('front').all())
  File "C:\PyProjects\Django_back\venv\lib\site-packages\django\db\models\query.py", line 252, in __repr__
    data = list(self[:REPR_OUTPUT_SIZE + 1])
  File "C:\PyProjects\Django_back\venv\lib\site-packages\django\db\models\query.py", line 276, in __iter__
    self._fetch_all()
  File "C:\PyProjects\Django_back\venv\lib\site-packages\django\db\models\query.py", line 1261, in _fetch_all
    self._result_cache = list(self._iterable_class(self))
  File "C:\PyProjects\Django_back\venv\lib\site-packages\django\db\models\query.py", line 57, in __iter__
    results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)
  File "C:\PyProjects\Django_back\venv\lib\site-packages\django\db\models\sql\compiler.py", line 1151, in execute_sql
    cursor.execute(sql, params)
  File "C:\PyProjects\Django_back\venv\lib\site-packages\django\db\backends\utils.py", line 100, in execute
    return super().execute(sql, params)
  File "C:\PyProjects\Django_back\venv\lib\site-packages\django\db\backends\utils.py", line 68, in execute
    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
  File "C:\PyProjects\Django_back\venv\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
    return executor(sql, params, many, context)
  File "C:\PyProjects\Django_back\venv\lib\site-packages\django\db\backends\utils.py", line 86, in _execute
    return self.cursor.execute(sql, params)
  File "C:\PyProjects\Django_back\venv\lib\site-packages\django\db\utils.py", line 90, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "C:\PyProjects\Django_back\venv\lib\site-packages\django\db\backends\utils.py", line 86, in _execute
    return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: relation "exlorer_btcaddresse" does not exist
LINE 1: ...resse"."id", "exlorer_btcaddresse"."address" FROM "exlorer_b...
                                                             ^

[23/Apr/2020 00:19:32] "GET / HTTP/1.1" 500 129001


Подскажите пожалуйста, как сделать запрос к БД от Проекта-1?
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
tumbler
@tumbler Куратор тега Django
бекенд-разработчик на python
Ну в целом у Вас уже всё получилось, только скорее всего в имени таблицы опечатка. Ошибка напрямую к постгресу относится.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@msnyastar Автор вопроса
Да, похоже. На запрос
User.objects.using('front').all()
получаю нормальный ответ без исключения...
Буду разбираться...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы