Това трябва да се компилира точно...
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)
заявка.