【问题标题】:How to set up database for Django app on Heroku?如何在 Heroku 上为 Django 应用程序设置数据库?
【发布时间】: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.
    }
}

谁能帮帮我?谢谢!

【问题讨论】:

    标签: django heroku


    【解决方案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 字符串似乎可行。谢谢!
    猜你喜欢
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-28
    • 2015-10-02
    相关资源
    最近更新 更多