のぶLab.

流しのソフトウェアエンジニアの雑記帳. Android, Scala, Clojure, Ruby on Railsなど

Djangoで既存のデータベースを使う

python manage.py syncdb

このコマンドで作成するDBはModel.pyからテーブルを自動生成してデータベースを作成するが、
バッチ生成など事前に作成しておいたデータベースファイルを使用したい場合もある。
Models.pyを以下のようにすると既存のDBファイルを利用することができる

from django.db import models

class Hoge(models.Model):
  foo = models.CharField(max_length=32)

  class Meta:
    managed = False
    db_table = 't_hoge'

ポイントはMetaクラス
"managed = False"でsyncdbの自動管理対象外に
"db_table = 't_hoge'"で指定したテーブル名に対応したModelクラスになる。
※"db_table"を指定しないでsyncdbした場合は"app_hoge"のようにアプリケーション名が頭についたテーブル名が自動生成される