Ini harus dikompilasi dengan tepat...
query( models.Object )\
.filter(
sqlalchemy.func.upper( models.Object.fieldname )\
.in_( (sqlalchemy.func.upper(foo) , sqlalchemy.func.upper(bar), ) )
)\
.all()
-
Anda juga bisa memasukkan teks huruf besar saja. secara pribadi, saya akan melakukan
in_( foo.uppercase() , bar.uppercase() )
-
SqlAlchemy bekerja dengan DBAPI untuk meneruskan parameter bind ke penyimpanan data backend Anda. Terjemahan -- nilai diloloskan secara otomatis.
jika Anda ingin melakukan daftar string, sesuatu seperti ini akan berfungsi
.in_( [ i.upper() for i in inputs ] )
.in_( [ sqlalchemy.func.upper(i) for i in inputs ] )
Hanya ingin menambahkan bahwa jika Anda ingin mengoptimalkan pilihan ini untuk kecepatan, dan menggunakan Postgres atau Oracle, Anda dapat membuat 'indeks fungsi'
CREATE INDEX table_fieldname_lower_idx ON table(lower(fieldname))
perencana kueri (dalam database) akan tahu untuk menggunakan lower(fieldname)
indeks saat menelusuri lower(fieldname)
kueri.