dj-database-urlに渡すデフォルトの接続文字列
dj-database-urlを使うとdb接続文字列を環境変数DATABASE_URLから取得させることができます。
https://github.com/kennethreitz/dj-database-url
herokuにdjangoアプリを動かすときとかに使ってます。
設定は以下のように書きます。
環境変数DATABASE_URLがない場合はdefaultとして渡した文字列をパースして接続文字列を取得します。
DATABASES = {'default': dj_database_url.config(default='postgres://...')}
dj_database_url.parseを使うと、環境変数は参照せずに渡した文字列をパースして接続文字列を取得します。
DATABASES = {'default': dj_database_url.parse('postgres://...')}
さて接続文字列ですが、sqliteを使う場合渡す文字列は以下のような感じで書いてます。
import os PROJECT_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir)) DATABASES = {'default': dj_database_url.parse('sqlite:///%s' % os.path.join(PROJECT_ROOT, 'development.db') )}
以下の設定と同義になります。
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': 'development.db', 'USER': '', 'PASSWORD': '', 'HOST': '', 'PORT': '', } }
mysqlの場合は以下のような感じ
DATABASES = {'default': dj_database_url.parse('mysql://testuser:testuserpassword@localhost:3306/devdb'') )}
以下の設定と同義になります
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'devdb', 'USER': 'testuser', 'PASSWORD': 'testuserpassword', 'HOST': 'localhost', 'PORT': '3306', } }
注意点として、パスワードに#が含まれている場合は、接続文字列を正しくパースできないので使えません。