Я намагаюся з цього ранку і єчитайте всі публікації тут і всюди про доступ до декількох баз даних у джанго безрезультатно. Я шукаю доступ до іншої бази даних на тому ж сервері, і я включив бази даних у 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()
Сподіваюся, що це допомагає комусь іншому.