これは正確にコンパイルする必要があります...
query( models.Object )\
.filter(
sqlalchemy.func.upper( models.Object.fieldname )\
.in_( (sqlalchemy.func.upper(foo) , sqlalchemy.func.upper(bar), ) )
)\
.all()
-
大文字のテキストを渡すこともできます。個人的には、
in_( foo.uppercase() , bar.uppercase() )
を実行します -
SqlAlchemyはDBAPIと連携して、バインドパラメーターをバックエンドデータストアに渡します。翻訳-値は自動的にエスケープされます。
文字列のリストを作成したい場合は、このようなものが機能するはずです
.in_( [ i.upper() for i in inputs ] )
.in_( [ sqlalchemy.func.upper(i) for i in inputs ] )
これらの選択を速度のために最適化したい場合で、PostgresまたはOracleを使用している場合は、「関数インデックス」を作成できます
。CREATE INDEX table_fieldname_lower_idx ON table(lower(fieldname))
(データベース内の)クエリプランナーは、そのlower(fieldname)
を使用することを認識します。 lower(fieldname)
に対して検索するときのインデックス クエリ。