Опитвам се от тази сутрин и имампрочетете всички публикации тук и навсякъде за достъп до множество бази данни в 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()
Надявам се, че това помага на някой друг.