/ / Доступ до декількох баз даних у Django за допомогою () - django, django-моделей

Доступ до декількох баз даних в Django з використанням () - django, django-models

Я намагаюся з цього ранку і єчитайте всі публікації тут і всюди про доступ до декількох баз даних у джанго безрезультатно. Я шукаю доступ до іншої бази даних на тому ж сервері, і я включив бази даних у settings.py з псевдонімами. Коли я намагаюся використати using () у наборі запитів, я отримую помилку, що глобальна назва "Ім'я об'єкта" не існує. Я використовую postgresql 9.1 з django 1.4

Чи є щось, що мені потрібно імпортувати, щоб це працювало? Він не працює для мене ні в консолі (python Manag.py shell), ні в представленнях.

Ось настройка бази даних з settings.py:

DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql_psycopg2",     # Add "postgresql_psycopg2", "postgresql", "mysql", "sqlite3" or "oracle".
"NAME": "testing",      # Or path to database file if using sqlite3.
"USER": "xxxx",                     # Not used with sqlite3.
"PASSWORD": "xxxx",                 # Not used with sqlite3.
"HOST": "localhost",                    # Set to empty string for localhost. Not used with sqlite3.
"PORT": "xxxx",                         # Set to empty string for default. Not used with sqlite3.
},
"app_data": {
"ENGINE": "django.db.backends.postgresql_psycopg2",     # Add "postgresql_psycopg2", "postgresql", "mysql", "sqlite3" or "oracle".
"NAME": "applications",      # Or path to database file if using sqlite3.
"USER": "xxxx",                     # Not used with sqlite3.
"PASSWORD": "xxxx",                 # Not used with sqlite3.
"HOST": "localhost",                    # Set to empty string for localhost. Not used with sqlite3.
"PORT": "xxxx",                         # Set to empty string for default. Not used with sqlite3.
},
"ppp_data": {
"ENGINE": "django.db.backends.postgresql_psycopg2",     # Add "postgresql_psycopg2", "postgresql", "mysql", "sqlite3" or "oracle".
"NAME": "platform",      # Or path to database file if using sqlite3.
"USER": "xxxx",                     # Not used with sqlite3.
"PASSWORD": "xxxx",                 # Not used with sqlite3.
"HOST": "localhost",                    # Set to empty string for localhost. Not used with sqlite3.
"PORT": "xxxx",                         # Set to empty string for default. Not used with sqlite3.
}

}

Ось код з консолі:

>>> MyModel.objects.using("app_data").all()
Traceback (most recent call last):
File "<console>", line 1, in <module>
NameError: name "MyModel" is not defined

Ось помилка з подання:

NameError at /myapp/view
global name "MyModel" is not defined

Будь ласка, допоможіть!

Відредаговано: Щоб трохи ознайомитись, у мене на одному сервері працюють різні програми, що працюють на різних серверах з різними базами даних, і я хотів отримати доступ до записів у різних додатках лише для перегляду. 3 додатки - це програма, ppp та тестування, і я намагаюся отримати доступ до даних програми та ppp з мого тестового додатка.

Відповіді:

0 для відповіді № 1

Мені довелося додати шляхи до інших програм до файлу wsgi.

import os, sys
sys.path.append("/opt/www/test")
sys.path.append("/opt/www/app")
sys.path.append("/opt/www/ppp")

Тоді я можу імпортувати моделі з інших додатків

from pp_app.myapp.models import MyModel
from pp_ppp.myapp.models import MyModel

Тоді це дозволило мені використовувати метод using () у представленнях для отримання записів:

data1 = MyModel.objects.using("app_data").all()
data2 = MyModel.objects.using("ppp_data").all()

Сподіваюся, що це допомагає комусь іншому.