Django ORMよりもSQLAlchemyの方が優れているのは何ですか? これはDjangoの人たち1から聞いた主な質問であり、それに答えがあります。SQLAlchemyは、非常に単純なことしか表現できないDjango ORMとは異なり、SQLクエリ(80〜90%)を表現できます。
また、一部のDjangoプロジェクトでは、標準ORMでは不可能な複雑なクエリが必要です。 条件付きで、プロジェクトの作成時にDjango ORMで十分であると考えられていたと仮定します。 解決策として、純粋なSQLを記述するか、SQLAlchemyを使用できます。 純粋なSQLはDRYフィクションに向いていないため、私は2番目のアプローチに取り組んでいます。
SQLAlchemyを使用する場合の欠点は何ですか? SQLAlchemyとDjango ORMは互換性がなく、その作成者にはそのような計画がなかったため、このライブラリのデータ構造を個別に記述する必要があります。 データベースから構造のデータモデルを構築することもできます。 オプションでもありますが、データベース自体がまだ存在しない場合に微妙な瞬間がポップアップします。 私は別の道を歩み、Aldjemyプロジェクトでdjangoモデルの構造を構築しました。
使用するには、INSTALLED_APPSの最後に `aldjemy`を追加するだけで、aldjemyはすべてのモデルを調べ、` sa`属性をそれらに追加します。
./manage.py shell_plusを実行して、次のように入力してみましょう。
User.sa.query.join(User.sa.user_groups).join(User.sa.user_groups.property.mapper.class_.group).filter(Group.sa.name=="GROUP_NAME")
, join- ? , SQLA, SQLA join- . , SQLA ? ! SQLA , , , — , , .
github.
PyPi:
pip install aldjemy
1. Django guys , Django. — Dj-.
: But aldjemy is not positioned as Django ORM drop-in replacement. Its helper for special situations.
, habrahabr.ru/blogs/python/128052/#comment_4231276