Django ORMはアクティブレコードの実装を使用します–この実装はほとんどのORMで見られます。基本的には、データベースの各行がコード内のオブジェクトに直接マップされ、その逆も同様です。DjangoなどのORMフレームワークでは、コード内のプロパティを使用するためにスキーマを事前に定義する必要はありません。フレームワークはデータベーススキーマを調べることで構造を「理解」できるため、これらを使用するだけです。また、レコードはテーブルの特定の行にマップされているため、データベースに保存することもできます。
SQLAlchemyはデータマッパー実装を使用します–この種の実装を使用する場合、データベース構造とオブジェクト構造が分離されます(Active Record実装のように1:1ではありません)。ほとんどの場合、データベースとの対話を維持するために(たとえば、オブジェクトを保存するために)、別の永続層を使用する必要があります。したがって、Active Record実装(これは短所です)を使用するときにできるようにsave()メソッドを呼び出すことはできませんが、一方で、コードが機能するためにデータベース内のリレーショナル構造全体を知る必要はありません。 、コードとデータベースの間に直接の関係がないため。
では、どちらがこの戦いに勝ちますか?なし。それはあなたが達成しようとしていることに依存します。アプリケーションのほとんどがCRUD(作成、読み取り、更新、削除)アプリケーションであり、さまざまなデータエンティティ間の関係に適用するハードで複雑なルールがない場合は、Active Record実装(Django)を使用する必要があると思います。これにより、面倒なことなく、製品のMVPを簡単かつ迅速に設定できます。アプリケーションに多くの「ビジネスルール」と制限がある場合は、データマッパーモデルを使用した方がよい場合があります。これは、Active Recordのように拘束されたり、厳密に考えたりする必要がないためです。