DjangoのSQLAlchemy

画像 私はDjangoが好きではありません。 私は、Django ORM、Djangoテンプレート、Djangoフォーム、およびDjangoのその他多くのものが好きではありません。 しかし、Djangoには明確な利点があります-多くの人はDjangoを使用しており、ほとんどすべてのpythonプログラマーがdjangoに精通しています。 したがって、このフレームワークの欠点に我慢する必要がありますが、SQLAlchemyなどの非常に優れたpythonライブラリを使用して生活を楽にする人はいません。



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



All Articles