从今天早上开始,我一直在尝试,并阅读了所有关于在 django 中访问多个数据库的帖子,但无济于事。我正在寻找访问同一服务器上的另一个数据库,并且我已将这些数据库包含在带有别名的 settings.py 中。当我尝试在查询集中使用 using() 时,我收到一个错误,即全局名称“对象名”不存在。我正在使用带有 django 1.4 的 postgresql 9.1
我需要导入什么才能使其正常工作吗?它在控制台(python manage.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 个不同的应用程序在具有不同数据库的一台服务器上运行,我想访问不同应用程序的记录只是为了查看。这 3 个应用程序是应用程序、ppp 和测试,我正在尝试从我的测试应用程序访问应用程序和 ppp 数据。