如何在 Heroku 上为 Django 应用程序设置数据库?
Posted
技术标签:
【中文标题】如何在 Heroku 上为 Django 应用程序设置数据库?【英文标题】:How to set up database for Django app on Heroku? 【发布时间】:2013-05-27 22:25:08 【问题描述】:我是一个完整的 Heroku 菜鸟,我正在尝试在 Heroku 上设置一个 Django 应用程序。我不知道在 settings.py 中为这些设置输入什么:
DATABASES =
'default':
'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': '', # Or path to database file if using sqlite3.
# The following settings are not used with sqlite3:
'USER': '',
'PASSWORD': '',
'HOST': '', # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
'PORT': '', # Set to empty string for default.
谁能帮帮我?谢谢!
【问题讨论】:
【参考方案1】:您可以通过查看仪表板中的数据库信息或运行“heroku config”来查看数据库配置字符串来手动执行此操作。但目前为止最好的方法在Heroku Getting Started guide for Django 中有详细说明。将dj-database-url==0.2.1
添加到您的requirements.txt
文件中,然后:
# Parse database configuration from $DATABASE_URL
import dj_database_url
DATABASES['default'] = dj_database_url.config()
代替其他数据库定义。
【讨论】:
谢谢!所以你说如果我编辑 requirements.txt,那么我应该能够将上面的代码块复制并粘贴到 settings.py 中,而不必担心填写数据库设置?我这样做了,然后尝试运行'python manage.py syncdb'并得到以下错误:'ImproperlyConfigured:settings.DATABASES 配置不正确。请提供 ENGINE 值。查看设置文档以获取更多详细信息。' 然后我尝试将“ENGINE”值设置为“django.db.backends.postgresql_psycopg2”,但它仍然给了我同样的错误......嗯。 可能问题是这段代码是在 Heroku 上运行的,你的 DATABASE_ENV 或其他一些系统变量已经设置好了。我假设您正在尝试首先在本地构建上运行它。要解决该问题,您可以将默认 URL 字符串传递给 dj_database_url.config()(请参阅 github.com/kennethreitz/dj-database-url )或为本地构建维护一个单独的设置文件。 也许理想的方法是设置您的设置文件,以便您的“基本”设置文件可以在 Heroku 上运行,但您也可以拥有一个本地设置文件,使用import
覆盖只有特定的设置。解释如何做到这一点对于这个领域来说有点复杂,但如果你正在寻找这样的资源,我相信这是对初学者有用的书“Django 的两个勺子”中详细介绍的策略。
哦,我明白了。传入默认 URL 字符串似乎可行。谢谢!以上是关于如何在 Heroku 上为 Django 应用程序设置数据库?的主要内容,如果未能解决你的问题,请参考以下文章
如何在使用heroku部署的flask webapp上为每个用户实现唯一的会话[重复]
在 Heroku 上为 Node.js 应用程序强制使用 HTTPS
在 Heroku 上为 Mongo Labs 数据库配置 Node.js 连接字符串