Zakku-Spot.com

気になる情報のリサーチブログ - Reserch blog of information you care about -

[基礎知識]Djangoから既存DB(MySQL)テーブルに接続・操作する手順

10月 1, 2023
0 0
Read Time:46 Second

 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データベースの既存テーブルの操作、表示ができました。

Happy
Happy
0 %
Sad
Sad
0 %
Excited
Excited
0 %
Sleepy
Sleepy
0 %
Angry
Angry
0 %
Surprise
Surprise
0 %

Average Rating

5 Star
0%
4 Star
0%
3 Star
0%
2 Star
0%
1 Star
0%

コメントを残す