2013-10-26

djangoでsqlite3からpostgreSQLに移行してみた。

sqlite3は非常に手軽に扱えてGoodなんだけど、

外部キー制約をadd constraint で追加できなかったり

コマンド上でカラムを一気に複数作れなかったり、

drop columnもこんな感じで結構面倒。

 

軽さ故に痒いところに手が届かない感じでハマりまくった。

 

基本機能としてrailsのマイグレーションみたいなのをサポートしていないdjangoは

Southとかのツールを利用しないとなるとテーブルを直接触らないといけないので

sqlite3ではちょっと学習効率も開発効率も悪いなーと思ったので

postgreSQLに乗り換えてみた。

 

pythonのpostgreSQLドライバとしてはpsycopg2が有名なんだけど

windows だとpip install psycopg2 ってやると

vcvarsall.batが無いとか言われて、

この為だけにVC++2010をインストールしたけど

それでもうまく動かず…。

 

psycopg2のWebサイトに行ったらwindows用のインストーラがあるとかいう

何という灯台下暗し!

 

しかるべきバージョンのインストーラをダウンロードし、exeクリックで余裕でインストール!

あとはdjangoのsettings.pyを

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'django_mytaskapp',                      # Or path to database file if using sqlite3.
        # The following settings are not used with sqlite3:
        'USER': 'postgres',
        'PASSWORD': 'xxxxx',
        'HOST': 'localhost',                      # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
        'PORT': '5432',                      # Set to empty string for default.
    }
}

ってやって “python manage.py syncdb”でOK。

 

ちなみにNAMEに指定したデータベースはsyncdbしても自動的に作成されないので

ちゃんとpsqlからテーブル作成してあげないとダメ。

 

sqlite3だとデータベースという概念を意識せずに色々できちゃってたのでプチハマりしました。

このエントリーをはてなブックマークに追加