2013-05-15 7 views
59

मैं उपयोगकर्ताओं के डेटाबेस से पूछताछ के लिए Flask-SQLAlchemy का उपयोग कर रहा हूं; हालांकि, जबकिकेस असंवेदनशील फ्लास्क-SQLAlchemy क्वेरी

user = models.User.query.filter_by(username="ganye").first() 

<User u'ganye'> 

वापस आ जाएगी

user = models.User.query.filter_by(username="GANYE").first() 

रिटर्न

None 

वहाँ एक मामले में डेटाबेस क्वेरी करने के लिए कोई तरीका है मैं सोच रहा हूँ कर असंवेदनशील तरीका, ताकि दूसरा एक्सपैम्प le अभी भी वापस आ जाएगी

<User u'ganye'> 

उत्तर

110

आप का उपयोग करके यह कर सकते हैं या तो आपके फ़िल्टर में lower या upper कार्य:

.query.filter(Model.column.ilike("ganye")) 
:

from sqlalchemy import func 
user = models.User.query.filter(func.lower(User.username) == func.lower("GaNyE")).first() 

एक अन्य विकल्प ilike बजाय like का उपयोग करके खोज करते हैं करने के लिए है

3

@ प्लेस के उत्तर में सुधार, यह क्वेरी को छोटा कर देगा यदि आप केवल कॉलम निर्दिष्ट करते हैं आप की जरूरत:

from flask import jsonify 
jsonify(result=user) 
+0

'ilike':

user = models.User.query.with_entities(models.User.username).\ filter(models.User.username.ilike("%ganye%")).all() 

ऊपर के उदाहरण मामला एक AJAX के प्रयोजनों के लिए और बोतल के jsonify का उपयोग करने की जरूरत है में बहुत उपयोगी है तो अपने जावास्क्रिप्ट पहुँच में यह data.result का उपयोग कर धीमा हो सकता है: https://stackoverflow.com/a/20336666/1667018 –

संबंधित मुद्दे