Điều này sẽ biên dịch chính xác ...
query( models.Object )\
.filter(
sqlalchemy.func.upper( models.Object.fieldname )\
.in_( (sqlalchemy.func.upper(foo) , sqlalchemy.func.upper(bar), ) )
)\
.all()
-
bạn cũng có thể chuyển bằng văn bản viết hoa. cá nhân tôi sẽ làm
in_( foo.uppercase() , bar.uppercase() )
-
SqlAlchemy làm việc với DBAPI để chuyển các tham số liên kết vào kho dữ liệu phụ trợ của bạn. Bản dịch - các giá trị được thoát tự động.
nếu bạn muốn thực hiện một danh sách các chuỗi, một cái gì đó như thế này sẽ hoạt động
.in_( [ i.upper() for i in inputs ] )
.in_( [ sqlalchemy.func.upper(i) for i in inputs ] )
Chỉ muốn thêm rằng nếu bạn muốn tối ưu hóa các lựa chọn này về tốc độ và trên Postgres hoặc Oracle, bạn có thể tạo 'chỉ mục chức năng'
CREATE INDEX table_fieldname_lower_idx ON table(lower(fieldname))
trình lập kế hoạch truy vấn (trong cơ sở dữ liệu) sẽ biết sử dụng lower(fieldname)
đó lập chỉ mục khi tìm kiếm với lower(fieldname)
truy vấn.