Djangoプロジェクトで複雑なクエリを実行するためにsqlalchemyを使用する最良のオプションは何ですか?私は静かであると感じましたが、多くのユーザーがいるプロジェクトのようには見えません。Djangoプロジェクトで複雑なクエリを実行するためのSqlalchemy
理由:私はプロジェクト全体で30〜40のRawQueryを持っていて、これらのクエリを維持するのは辛いです...私はSQLAlchemyがこの場合より良い経験を提供できると思います。
更新。
q = get_big_complex_sqlalachemy_query()
mine = q.filter_by(table.c.created_by_id=1)
closed = q.filter_by(table.c.is_closed=True)
ジャンゴとSQLAlchemyの最大の問題は、トランザクション管理です:私は必要と
達成するための主な目標は、かつていくつかの大きな複雑なクエリを作成し、後でそれを洗練することができることです。大きなトランザクション(要求ごとに1つのトランザクション)を使用すると、SQLAlchemyはコミットするまで変更を見ません(幸いなデバッグ:)。だから私はDjango接続を使用するSQLAlchemy用のカスタム接続プールを書いた。これは理想的ではありません(SQLAlchemyはすべての選択をトランザクションでラップするのが好きで、これを無効にする方法はまだ分かりません)ので、テストで問題があります。
そして、方法はありません、Django ORMはタスクまでですか? – miku
@mikuたとえば、1つのテーブルに複数の結合を作成するにはどうすればよいですか? LEFT JOINタグt1 ... LEFT JOINタグt2?私が見つけた唯一の方法はRawQueryを書くことですが、sqlalchemyがこれに対してより良い方法を提供できるように見えます...少なくともSQLAlchemyを介してSQLを生成し、それをRawQueryに渡すことは可能です。 –
@Vladimir:.extra(tables = ['table1'、 'table2'])の使用はどうですか? –