Detta bör kompilera exakt...
query( models.Object )\
.filter(
sqlalchemy.func.upper( models.Object.fieldname )\
.in_( (sqlalchemy.func.upper(foo) , sqlalchemy.func.upper(bar), ) )
)\
.all()
-
du kan också bara skicka med versaler. personligen skulle jag göra
in_( foo.uppercase() , bar.uppercase() )
-
SqlAlchemy arbetar med DBAPI för att skicka bindningsparametrar till din backend-datalagring. Översättning -- värden escapes automatiskt.
om du vill göra en lista med strängar bör något sådant här fungera
.in_( [ i.upper() for i in inputs ] )
.in_( [ sqlalchemy.func.upper(i) for i in inputs ] )
Vill bara tillägga att om du vill optimera dessa val för hastighet och är på Postgres eller Oracle kan du skapa ett "funktionsindex"
CREATE INDEX table_fieldname_lower_idx ON table(lower(fieldname))
frågeplaneraren (i databasen) vet att den lower(fieldname)
används index när du söker mot en lower(fieldname)
fråga.