python - Django + Heroku 数据库

标签 python django database postgresql heroku

在我的 Django 应用程序中编辑 settings.py 文件时,我有以下内容:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'mydb', 
        'USER': 'myuser',
        'PASSWORD': 'password',
        'HOST': '',
        'PORT': '',
    }
}

# Parse database configuration from $DATABASE_URL
import dj_database_url
DATABASES['default'] =  dj_database_url.config()

谁能解释一下结果到底是什么?

一方面,我已经建立了一个 postgresql 数据库 - 到目前为止一直是 sqlite 并且仅在本地用于开发。

现在我正在部署到 Heroku,我导入了 dj_database_url,我认为它在我的数据库和 Heroku 自己的 postgresql 设置之间建立了链接。

那么,如果 Heroku 无论如何都要将其转换为 postgresql,那么我设置的数据库有什么关系吗?

最佳答案

同时拥有这两者是没有意义的。该片段的最后一行会覆盖您之前定义的默认数据库配置。

编辑

这与您是否使用 manage.py runserver 无关。唯一的一点是 Heroku 定义了一个环境变量 DATABASE_URL,其中包含数据库位置和凭据,然后由 dj_database_url 解析。你应该做的是在本地定义同样的东西:dj_database_url docs有一些用于不同数据库后端的格式示例。

设置 env 变量的最佳方法是将其放在开发目录中名为 .env 的文件中,然后始终通过 foreman start 启动您的应用程序(Foreman 应该已安装Heroku 工具带)。查看 Heroku getting started docs了解更多。

但是如果这对你不起作用,你总是可以在第一次运行 manage.py 之前在你的 shell 中执行 export DATABASE_URL=whatever

关于python - Django + Heroku 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27766975/

相关文章:

python - Django 删除 UpdateView 中的内联表单集记录

python - 如何使用 celery 选择 task_id?

database - 规划数据库应用程序

python - Python 中线程化和非线程化 Win10Toast 通知有什么区别?

python - Python 是否评估前向引用的类型提示?

python - 亚马逊 Kinesis Video GetMedia/PutMedia

Django Rest Framework/Angular JS 预检选项

mysql - 更改生产数据库

database - 如何为搜索引擎设计数据库模式?

python - 我可以向不同的收件人发送包含不同消息的不同邮件吗