web-dev-qa-db-ja.com

DATABASE_URLはどのように設定すればよいですか?

私は初めてのHeroku/Djangoアプリに取り組んでいます。 _DATABASE_URL_変数とDATABASES変数を正しく設定していることを確認したいだけです。これが私のコードの内容です:

_import dj_database_url

DATABASE_URL = 'postgresql:///my_app'

# Parse database configuration from $DATABASE_URL
DATABASES = {
    'default': dj_database_url.config(default=DATABASE_URL)
}
_

DATABASES['default'] = dj_database_url.config()があり、Django _run server_やmigrateなどのコマンドを使用しようとすると、次のエラーが発生します:_NameError: name 'DATABASES' is not defined_。この問題を解決するように見えるので、_DATABASE_URL_を設定しました(_my_app_データベースを作成した後)。

コーディングとテストを行っている間、すべてが正常に機能しているように見えますが、インターネット上でデータベース変数を設定するための6つの異なる方法も確認しました。これが正しくない場合は、今すぐ修正したいと思います。私を本当に混乱させているのは、データベースが/ usr/local/var/postgresの場合、アプリをHerokuにプッシュすると、データはどのようにWebにプッシュされるのでしょうか。それとも、これはまったく起こりませんか?この時点で私はあまりにも混乱/疲れていますか?

9
James Kelleher

これは単純な論理の問題です。ディクショナリ自体を定義する前に、DATABASESディクショナリの「デフォルト」キーを設定することはできません。

呼び出し内でdefaultparameterdj_database_urlに設定するか、別のDATABASE_URL変数として設定するかは関係ありません。特に、そうなることはありません。 Herokuで使用されます。これは、環境変数によってオーバーライドされるためです。

4
Daniel Roseman

これは Heroku Devecenter に文書化されています

# Parse database configuration from $DATABASE_URL
import dj_database_url
# DATABASES['default'] =  dj_database_url.config()
#updated
DATABASES = {'default': dj_database_url.config(default='postgres://user:pass@localhost/dbname')}

必要な場合 データベース接続プール このビットも追加します。 詳細

# Enable Connection Pooling
DATABASES['default']['ENGINE'] = 'Django_postgrespool'
10
moonstruck