python - 将 Django Web 应用程序数据库连接到 Pythonanywhere 上的 postgresql

标签 python django database postgresql pythonanywhere

我想将我的 Django Web 应用程序数据库连接到我的 Pythonanywhere 付费帐户上的 postgresql 数据库。在编写任何代码之前,我只想让所有东西都能相互对话。这是我的 django 应用程序中的 settings.py DATABASE 部分。我正在运行 Python 3.5 和 Django 1.9。

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.postgresql',
    'NAME': '[myDatabaseName]',
    'USER': '[myUsername]',
    'PASSWORD': '[myPassword]',
    'HOST': 'xxxxxxxx-xxx.postgres.pythonanywhere-services.com',
    'PORT': '10130',
    }
}

我们的主机和端口都是从 pythonanywhere.com 站点的 DATABASE 和 Postgres 选项卡下提供的。我确实在 postgres 控制台上创建了数据库、用户名和密码。

然后我创建了一个 checkb.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

关于python - 将 Django Web 应用程序数据库连接到 Pythonanywhere 上的 postgresql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36831274/

相关文章:

database - IntelliJ IDEA 10 从数据库模型生成实体(POJO)

python - 删除嵌套列表中字符串值中的撇号

Python:如何仅使用数学模块来集成数学函数?

python - 在 Python 中解析第 4 个大写字母?

python - Django:数据透视表

database - 如何在数据迁移助手工具中提供数据库名称

python - Django DisallowedModelAdminLookup 用于在 Admin list_filter 中查找

python - 如何将 ListView 添加到通用 DetailView ? Django

django - @vary_on_cookie 由于非 Django cookie 而失败

c# - 如何使用 LINQ TO SQL 检查用户名是否已存在于数据表中