Как сделать два проекта django одной и той же базой данных

Мне нужно, чтобы два отдельных проекта Django имели одну и ту же базу данных. В project_1 меня есть модели, создающие объекты, которые мне нужно использовать в project_2 (в основном изображения).

Древовидная структура project_1_2 :

 project_1/ manage.py settings.py project_1_app1/ ... ... project_2/ manage.py settings.py project_2_app1/ ... ... 

Какой подход лучше всего подходит?

EDIT : Я использую sqlite3 в своей среде разработки.

Я бы хотел, чтобы мои два проекта django были автономными проектами (чтобы обе они могли безопасно обновляться из соответствующих репозиториев).

 # in project_1/settings.py import os PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__)) .. DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(PROJECT_ROOT, 'development.db'), }, } ... # in project_2/settings.py import os PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__)) .. DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(PROJECT_ROOT, 'development.db'), }, } ... 

Таким образом, каждый проект имеет свой собственный development.db (тот, который мне нужно разделить):

 project_1/development.db project_2/development.db 

но я думаю, мне нужно сделать что-то еще, чтобы сделать его общим (и уникальным). Лучшим для меня было бы сохранить development.db в проекте_1 / path и, таким образом, установить для параметра project_2 / settings.py DATABASES пункт project_1 / development.db .

One Solution collect form web for “Как сделать два проекта django одной и той же базой данных”

Вы можете просто определить одну и ту же базу данных в DATABASES в своих settings.py. Итак, если ваша база данных PostgreSQL, вы можете сделать что-то вроде этого:

 # in project_1/settings.py DATABASES = { 'default': { 'NAME': 'common_db', 'ENGINE': 'django.db.backends.postgresql', 'USER': 'project_1_user', 'PASSWORD': 'strong_password_1' }, } # in project_2/settings.py DATABASES = { 'default': { 'NAME': 'common_db', 'ENGINE': 'django.db.backends.postgresql', 'USER': 'project_2_user', 'PASSWORD': 'strong_password_2' }, } 

Обратите внимание, что оба пользователя базы данных ( project_1_user и project_2_user ) должны иметь соответствующие привилегии в базе данных, которую вы хотите использовать. Или вы могли бы использовать одного и того же пользователя для обоих проектов.

Если вы хотите иметь не одну базу данных для каждого проекта, вы должны взглянуть на документы для нескольких баз данных .

По другому вопросу, поскольку вы обмениваетесь данными, я думаю, вы также разделяете функциональные возможности. Так, например, если project_1_app1 и project_2_app1 выполняют те же (или подобные) вещи, похоже, они могут вместо этого быть одноразовым приложением .

редактировать

Поскольку вы используете sqlite3, вы должны убедиться, что путь, который вы используете, тот же. Итак, предполагая, что project_1 и project_2 являются братьями и сестрами, например:

 projects project_1 settings.py ... project_2 settings.py ... 

вы должны попробовать следующее:

 # project_1/settings.py DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(PROJECT_ROOT, 'development.db'), }, } # project_2/settings.py DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join( os.path.dirname(os.path.dirname(PROJECT_ROOT)), 'project_1', 'development.db' ), }, } 

Это даст структуру, которую вы просите. Обратите внимание, однако, что проекты не являются «автономными». project_2 явно зависит от базы данных project_1 .

В любом случае, возможно, вы также должны взглянуть на модуль os.path для получения дополнительной информации.

  • Правильный способ обработки нескольких форм на одной странице в Django
  • ProgrammingError: (1146, «Таблица» test_ <DB>. <TABLE> «не существует») при запуске модульного теста для Django
  • Поле last_login не обновляется при аутентификации с использованием Tokenauthentication в Django Rest Framework
  • Почему некоторые запросы ORM Django внезапно заканчиваются сообщением «Killed»?
  • Производительность между Django и raw Python
  • 3D-расчет расстояний с GeoDjango
  • Django: Как получить доступ к параметрам регулярного выражения URL-адресов внутри класса промежуточного программного обеспечения?
  • Значок django с __in lookup
  • Объект не поддерживает ошибку присваивания элемента
  • Как отключить сторонний API при выполнении модульных тестов Django?
  • SQS с конфигурацией сельдерея
  • Python - лучший язык программирования в мире.