🐖
setup_db.py🌾🐖
📄 setup_db.py 仕様書
概要
- setup_project.pyの後に実行する事でflask+blueprint+DB機能を追加。
- 初回セットアップ後の専用スクリプト。
- 実行すると以下を自動化する。
機能 | 内容 |
---|---|
.env管理 | 必要な MySQL / Supabase キーが不足していれば .env に追記 |
requirements補完 |
requirements.txt に不足パッケージを自動追記(重複回避) |
ディレクトリ・ファイル作成 |
instance/ 、migrations/ 、app/models/ などを自動生成 |
app/init.py更新 |
app/__init__.py を安全に .bak へ退避後、絶対パス補正機能付きで上書き |
初期モデル作成 |
User テーブル(id, name カラム)を作成 |
初期画面作成 |
/dbtest/ で DB 接続確認できるページ作成 |
Flask-Migrate連携 |
flask db init → migrate → upgrade を自動実行 |
add_model.py生成 | モデル追加CLIを同時生成(生成済モデルの登録・マイグレーション付き) |
add_model.py(生成されるCLI)
-
目的: 新しいモデルファイル(テーブル)を簡単に作成・即反映する
-
流れ:
-
テーブル名
を入力 - カラム名・型を対話形式で追加(idは自動付与)
-
app/models/
に新しいモデルファイルを生成 -
app/models/__init__.py
にインポート文を追記 -
app/pages/dbtest/view.py
にインポート文を追記(存在する場合のみ) - 自動で以下のコマンドを実行し、DBに即反映
flask db migrate -m "add <table> table" flask db upgrade
-
-
カラム型入力例
String(255), Integer, Boolean, DateTime, Text, Float, JSON など -
__repr__の生成形式
return f'<Tablename {self.id}:{self.name}:{self.created_at}>'
注意事項
-
add_model.py
実行時にモデルを追加するだけで、マイグレーションまで自動で実行されます。 - モデルファイルは
models/__init__.py
とdbtest/view.py
に自動インポートされるため、手動インポート不要です。 - すでに同名のテーブルファイルが存在する場合は上書きされません。
-
setup_db.py
実行時、既存のapp/__init__.py
は.bak
へ退避され、SQLite の相対パス問題も同時に解決されます。 - dbtestディレクトリを削除した場合はadd_model.pyの自動生成は使用不可になります。
使用例
1. 初期セットアップ
python setup_db.py
上記により以下が一括で実行されます:
-
.env
とrequirements.txt
補完 - ディレクトリと初期ファイルの生成
- Flask-Migrate 初期化と
User
テーブルの作成
2. モデル追加(例:Postテーブルを追加)
python add_model.py
→ 以下が自動で行われます:
- モデル
Post
を作成 - 必要なファイルに import 追加
-
flask db migrate
&flask db upgrade
実行
この記事で使用したコードは以下のGitHubリポジトリで公開しています:
GitHub のファイルURLまたはパーマリンクを指定してください
Discussion