2016-11-20 19 views
0

column_1、column_2、...、column_nからなるテーブルがあり、そのすべてが文字列フィールドであると仮定します。大文字と小文字を区別しないクエリを実行する条件は、d [column_1] = "Hello"のような辞書dに格納されます。どのようにクエリを実行できますか?SQLAlchemyと複数列の大文字と小文字を区別しないクエリ

質問Case Insensitive Flask-SQLAlchemy Queryを確認しました。それにはすばらしい答えがたくさんありますが、実行時までどのような状態になっているのかわからないと動作しません。

答えて

1

辞書の各キーを使用してクエリをループする必要があります。

あなたが任意のコードサンプルを与えなかったとして、私はテーブルモデルクラスTableModelを呼び出すするつもりだと、各列には、このようなcolumn_1column_2など

何かが動作するはずのようになります

d = {'column_1': 'some_string', 'column_3': 'another_string'} 
# skipping 'column_2' just to exemplify how every column is optional in the dictionary 

my_query = TableModel.query 

for k in d: 
    my_query = my_query.filter(getattr(TableModel, k).ilike(d[k])) 

それはそれです。その後、my_query.count()またはmy_query.all()

+1

のようにmy_queryを使用することができます。 'eval'の代わりに' getattr(TableModel、k) 'を使用してください。 – dirn

+0

合意し、回答が更新されました。 – AArias

+0

それは動作します!ありがとうございました! –

関連する問題