/ / Достъп до множество бази данни в Django с помощта на () - django, django-модели

Достъп до множество бази данни в Django с използване на () - django, django модели

Опитвам се от тази сутрин и имампрочетете всички публикации тук и навсякъде за достъп до множество бази данни в django без никаква полза. Търся достъп до друга база данни на същия сървър и включих базите данни в settings.py с псевдоними. Когато се опитвам да използвам използващия () в набора от заявки, получавам грешка, че глобалното име "Име на обект" не съществува. Използвам 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 и 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()

Надявам се, че това помага на някой друг.