2016-05-20 45 views
0

私はSQLAlchemyを使い始めました。私はsqliteクエリの途中でたくさんの文字列式を使用していたので、これを使用することにしました。SQLAlchemy - "動的フィルタ"

これは私の問題です。私は多くの設備を備えたテーブルを持っており、それぞれにメンテナンスの日程があります。ポイントは、ユーザーが画面上で見たいメンテナンスレベルを選択できることです。だから、彼が選んだmaintananceレベルの組み合わせごとにSQLAlchemmyを調整する必要があります。

例えば、生のSQLiteでは、

選択し、m_level1 = DATE AND m_level2 = DATE *([]内の機器)....)

だから、それはそれぞれの場合の条件のために多くの組み合わせを有することが可能であり、それはチェックボックスがチェックされている依存。私が言及したように、生のSQLでは、私は自分の目標に達するために多くの文字列を使用しました。しかし、私はSQLAlchemyを使用してコードを改善したい。

申し訳ありません申し訳ありませんがコードはありません。皆さん、ありがとうございました !

+0

は、スタックオーバーフローへようこそ!あなたが試したことを理解するのに役立つコードを投稿することができますか?[最小、完全、および検証可能な例(MCVE)](https:// $ SITEURL $/help/mcve)? –

+0

私の次の答えを見てください。それはかなり働いていますが、それが正しいと思うかどうかはわかりません。要点は、条件を動的にしたいと思っていて、そのコードで取得できたということです。 –

答えて

5

あなたはORMを使用していると仮定します。

この場合、filter関数はクエリオブジェクトを返します。あなたconditionaly機能filter(*criterion)が、それは引数だとしてあなたはタプルを使用できることを意味し、@Wolphは、ここでは詳細を持っている

query = Session.query(schema.Object).filter_by(attribute=value) 
if condition: 
    query = query.filter_by(condition_attr=condition_val) 
if another_condition: 
    query = query.filter_by(another=another_val) 

#then finally execute it 

results = query.all() 
関連する問題