Djangoは導入初期状態ではSQLiteに初期DB、初期テーブルが既に存在し、これに接続する仕様になっています。この接続先DBは簡単に切り替え可能なのですが、やはりその際にもDjango独特の仕様を考慮する必要があります。
切替先DBの対象テーブルが、
(1) (今回の切替時点で未だ存在していない状態で) 今回、新規テーブル作成(その後に接続)するのか→(a)別記事「[レビュー]Django接続DB切換(SQLite→MySQL)手順(新規テーブル作成編)」参照
(2) (それとも既に存在している状態で) 既存テーブルに接続するだけなのか(→今回記事内容)
という点です。
以下は上記(2)についての作業記録です。
1.設定ファイル変更・反映
(1)settings.py の変更
実例:
(2)models.py の変更
①既存MySQLデータベースの既存テーブルからDjangoモデルの生成
・python manage.py inspectdb > [アプリフォルダ]/[新models.py仮名称]
実例:
python manage.py inspectdb > main1/models_inspectdb.py
②現models.pyに(上記①作成ファイルから)必要なモデル(テーブル定義)を移植
※上記’managed = False’は、
このモデルが既存のテーブルと対応している、という設定です。
③マイグレーションファイルのリセット
migrations
フォルダ内のすべてのマイグレーションファイル(__init__.py
以外)を削除して、マイグレーションの状態をリセットします。
④マイグレーションの再作成
・python manage.py makemigrations
⑤マイグレーションの(オプションによる)適用
・python manage.py migrate –fake-initial
※既存のテーブルと新しく生成されたマイグレーションファイルが一致するように、python manage.py migrate --fake-initial
を実行します。
※--fake-initial
オプションは、初期のマイグレーションが未適用で、モデルとテーブルがすでに一致している場合に使用します。このオプションにより、Djangoは既存のテーブルをそのまま使用すると認識します。
3.データ操作用ファイル(views.py)作成
データ操作内容をviews.pyにコーディングします。
実例:
4.表示用ファイル(temp.html)作成
表示内容をtemp.htmlにコーディングします。
実例:
5.表示確認
(1)上記(2)④⑤再度実施(マイグレーション)
(2)Webサーバ起動
・python manage.py runserver 0.0.0.0:8000
(3)ブラウザ表示
・http://127.0.0.1:8000/main1/temp/
以上で、既存MySQLデータベースの既存テーブルの操作、表示ができました。