レガシー データベースを使用するプロジェクトで SQLalchemy を使用しています。データベースには関数/ストアド プロシージャがあります。以前は生の SQL を使用していましたが、これらの関数をクエリのフィルターとして使用できました。
可能であれば、SQLAlchemy クエリについても同じことをしたいと思います。@hybrid_property について読んだことがありますが、これらの関数の一部には 1 つ以上のパラメーターが必要です。
一連の履歴レコードへの JOIN を持つ User モデルがあります。SUM(credit) - SUM(debit)
このユーザーのこれらの履歴レコードには、日付と借方および貸方フィールドがあるため、指定された日付まで実行することにより、特定の時点でのユーザーの残高を調べることができます。
と呼ばれるデータベース関数がありますdbo.Balance(user_id, date_time)
。これを使用して、特定の時点でのユーザーの残高を確認できます。
これをクエリの基準として使用して、特定の日時にマイナスの残高を持つユーザーのみを選択したいと考えています。
selection = users.filter(coalesce(Users.status, 0) == 1,
coalesce(Users.no_reminders, 0) == 0,
dbo.pplBalance(Users.user_id, datetime.datetime.now()) < -0.01).all()
これはもちろん、私がやりたいことの要点を理解するためだけに、機能しない例です。解決策はハイブリッド プロパティを使用することですが、前述したように、これらはパラメーターなしでのみ機能します (メソッドではなくプロパティであるため)。
このようなものを実装する方法についての提案 (可能であれば) は大歓迎です。
ありがとう、