SQLAlchemy/ファイル分割
model.py みたいな1ファイルに全てのモデル定義を書くと長大になる。ファットモデル指向にするなら大変なことになると思う。
正解は分からないけどこういう分け方にした。
code:dir
model/
__init__.py
base.py
model_a.py
model_b.py
...
base.pyでdeclarative_baseを定義して、model_a.pyなどからimportしてテーブルを定義しておく。
code:__init__.py
from app.model.base import Base
from app.model.model_a import ModelA
from app.model.model_B import ModelB
...
declarative_baseを使う際は model/__init__.py からimportする。こうすることで、モデル定義が全て済んだ状態のdeclarative_baseに触れることができる。alembicなどのマイグレーションツールを使う際に有用である。 関連を記録する用のテーブルは model/relation.py みたいなファイルに閉じこめてしまってよい気がする。