将Django的Web应用程序数据库连接到Pythonanywhere上的postgresql
问题描述:
我想将我的Django网络应用程序数据库连接到我的postgresql数据库我已经在我的Pythonanywhere付费帐户上。在编写任何代码之前,我只是想让所有的事情都彼此交谈。这是我的django应用程序中的settings.py DATABASE部分。我正在运行Python 3.5和Django 1.9。将Django的Web应用程序数据库连接到Pythonanywhere上的postgresql
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': '[myDatabaseName]',
'USER': '[myUsername]',
'PASSWORD': '[myPassword]',
'HOST': 'xxxxxxxx-xxx.postgres.pythonanywhere-services.com',
'PORT': '10130',
}
}
HOST和PORT我们都是从pythonanywhere.com网站的DATABASE和Postgres标签下提供的。我确实在postgres控制台上创建了我的数据库,用户名和密码。
然后我创建了一个checkedb.py脚本,我发现它会检查与postgres数据库的连接是否工作。
from django.db import connections
db_conn = connections['default']
try:
c = db_conn.cursor()
except OperationalError:
connected = False
else:
connected = True
这是运行此代码后收到的错误。
Traceback (most recent call last):
File "/usr/local/lib/python3.4/dist-packages/django/conf/__init__.py", line 38, in _setup
settings_module = os.environ[ENVIRONMENT_VARIABLE]
File "/usr/lib/python3.4/os.py", line 633, in __getitem__
raise KeyError(key) from None
KeyError: 'DJANGO_SETTINGS_MODULE'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/giraldez/golf/golf/dbcheck.py", line 2, in <module>
db_conn = connections['default']
File "/usr/local/lib/python3.4/dist-packages/django/db/utils.py", line 196, in __getitem__
self.ensure_defaults(alias)
File "/usr/local/lib/python3.4/dist-packages/django/db/utils.py", line 170, in ensure_defaults
conn = self.databases[alias]
File "/usr/local/lib/python3.4/dist-packages/django/utils/functional.py", line 49, in __get__
res = instance.__dict__[self.func.__name__] = self.func(instance)
File "/usr/local/lib/python3.4/dist-packages/django/db/utils.py", line 153, in databases
self._databases = settings.DATABASES
File "/usr/local/lib/python3.4/dist-packages/django/conf/__init__.py", line 54, in __getattr__
self._setup(name)
File "/usr/local/lib/python3.4/dist-packages/django/conf/__init__.py", line 47, in _setup
% (desc, ENVIRONMENT_VARIABLE))
django.core.exceptions.ImproperlyConfigured: Requested setting DATABASES, but settings are not configured. You must either define the environment variable D
JANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
为我的项目目录看起来像这样
golf/
---golf/
------__init.py__
------dbcheck.py
------settings.py
------urls.py
------wsgi.py
---media/
---static/
---manage.py
答
你,如果你正在使用它作为一个独立的脚本需要设置Django的第一。 ./manage.py shell
会更容易尝试。但如果你想有一个独立的脚本来测试,这里有云:
import sys,os
if __name__ == '__main__': # pragma nocover
# Setup environ
sys.path.append(os.getcwd())
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "main.settings_dev")
import django
django.setup()
from django.db import connections
db_conn = connections['default']
try:
c = db_conn.cursor()
except OperationalError:
connected = False
else:
connected = True
答
你所得到的错误是因为您需要正确初始化Django的环境之前,你可以对着它编写自定义脚本。
解决此问题的最简单方法是运行已加载django配置的python shell,您可以使用python manage.py shell
执行此操作。
一旦这个shell已经加载,输入你的代码,它应该告诉你连接是否有效。
您是否已检查安装的所有应用程序都包含在INSTALLED_APPS sttings变量中? – 2016-04-25 05:37:11