यह बिल्कुल संकलित होना चाहिए...
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 ] )
बस यह जोड़ना चाहते हैं कि यदि आप गति के लिए इन चयनों को अनुकूलित करना चाहते हैं, और पोस्टग्रेज़ या ओरेकल पर हैं, तो आप 'फ़ंक्शन इंडेक्स' बना सकते हैं
CREATE INDEX table_fieldname_lower_idx ON table(lower(fieldname))
क्वेरी प्लानर (डेटाबेस में) उस lower(fieldname)
. का उपयोग करना जानता होगा lower(fieldname)
. के विरुद्ध खोजते समय अनुक्रमणिका क्वेरी।