Toto by se mělo zkompilovat přesně...
query( models.Object )\
.filter(
sqlalchemy.func.upper( models.Object.fieldname )\
.in_( (sqlalchemy.func.upper(foo) , sqlalchemy.func.upper(bar), ) )
)\
.all()
-
můžete také zadat text velkými písmeny. osobně bych udělal
in_( foo.uppercase() , bar.uppercase() )
-
SqlAlchemy spolupracuje s DBAPI na předávání parametrů vazby do vašeho backendového datového úložiště. Překlad -- hodnoty jsou automaticky zakódovány.
pokud chcete vytvořit seznam řetězců, něco takového by mělo fungovat
.in_( [ i.upper() for i in inputs ] )
.in_( [ sqlalchemy.func.upper(i) for i in inputs ] )
Jen chci dodat, že pokud chcete optimalizovat tyto výběry na rychlost a jste na Postgres nebo Oracle, můžete si vytvořit „index funkcí“
CREATE INDEX table_fieldname_lower_idx ON table(lower(fieldname))
plánovač dotazů (v databázi) bude vědět, že má použít lower(fieldname)
index při vyhledávání proti lower(fieldname)
dotaz.