SQLAlchemy モデルの構成に関して全体像をつかむのを手伝ってくれる人がいるので、すべてのレベルで参照整合性が保証されますか?
参照整合性は DB によって表現および強制されるべきであるという考えに基づいて、必要と思われるすべての制約を備えたスキーマ (現在は Postgresql 内) を作成しました。
次に、宣言モードで SQLAlchemy (0.7) を使用して、この DB の上にアプリを構築し始めます。
少し検索して読んだところ、次のように構成できることがわかりました。
- Column() 定義の onupdate/ondelete ルール。
- relationship() 定義のカスケード オプション、
およびこれらが SQLAlchemy のセッション レベルで動作するように見えること。 - relationship() 定義の passive_deletes および passive_updates オプション。
そして、これらすべてのオプションにはデフォルトがあります。
しかし、セッション中に SQLAlchemy が DB とその制約と同期しなくなることがないように、SQLAlchemy モデルを実際にどれだけ処理する必要があるかについて、私は混乱しています。
SQLAlchemy の Columns() 定義で「onupdate」などを構成すると、正確には何を達成できますか?
また、cascade および passive_delete/passive_update ルールについては、relationship() で構成できます。ここで必要なものとその理由
または、私の質問を言い換えると: SQLAlchemy は、DB スキーマで構成された制約をどの程度まで認識し、モデルでそれらをどの程度 (およびどのように) 繰り返す必要がありますか?
他に注意すべきことはありますか?:)