ローカルで python manage.py syncdb してみる

次は Djangoチュートリアルを進めてみる。
使ったのは「django tutorial 1.5」で検索して最初に出て来たページ。(日本語版はないのかな?)

Database setup
プロジェクトを作る所まではやってあるので、データベースの設定から。
と、言っても既に settings.py には設定してあるのでとりあえずローカルで syncdb してみる。

(venv)[paraches@praches.com myHeroku]$ python manage.py syncdb
ImproperlyConfigured: settings.DATABASES is improperly configured. Please supply the ENGINE value. Check settings documentation for more details.
(venv)[paraches@praches.com myHeroku]$ 

エラー出た〜!
Heroku サーバ上では問題なかったのだけど、ローカルでやるとエラーになる。


データベースについての設定が settings.py でされていないってエラーなのだけど、考えてみれば当たり前。
settings.py では Heroku サーバで使う設定を最後に付け加えただけで、そうでない場合のデータベースの設定はされていない。
というわけで普通に DATABASES = に設定するのかな?と思ったけど(web では DATABASES に postgresql を指定している話が多い)、postgresql は使ったことないしユーザ設定とか面倒…。


で、探してみると settings.py の最後に加えた dj_database_url.config() で使うデータベースの設定ができるみたい。
ここで default の値として使用するデータベースの URL を渡せば、Heroku サーバ以外(ローカル)ではその値を使うらしい。

ただ、default='postgres://localhost'ってな感じで postgresql を指定するのがやっぱり多い…。
sqlite じゃダメ? と思ったけど、sqlite を使っている人もいるみたいなのでやってみた。

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

settings.py をこんな感じにして、syncdb してみる。

(venv)[paraches@praches.com myHeroku]$ python manage.py syncdb
…
You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'paraches'): 
Email address: xxxxxxxx@gmail.com
Password: 
Password (again): 
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)
(venv)[paraches@praches.com myHeroku]$ 

エラー出ずに成功したよ!