2012-09-14 14 views
10

मैं स्क्लेक्लेमी का उपयोग करके फ्लास्क पर एक इंटरफेस बना रहा हूं और इसका एक हिस्सा एक खोज एपीआई है। अनिवार्य रूप से एक टाइप-आगे इनपुट अपने मूल्य (उदाहरण के लिए एक ईमेल के लिए) के साथ सर्वर बुला रहा है और उसके बाद सर्वर की तरह नीचेएसक्यूएलकेमी के तारों को कैसे पार किया जाता है।() विधि

q = session.query(User).filter(User.email.like('%'+term+'%')).all() 

इस क्वेरी वास्तव में नहीं लौटा रहा है एक फिल्टर में .like का उपयोग कर एक SQLAlchemy क्वेरी प्रदर्शन कर रहा है कुछ भी उपयोगी और पहले कुछ पात्रों के बाद, कुछ भी नहीं। लेकिन अगर मैं अवधि के साथ एक ही क्वेरी निष्पादित hardcoded, इसलिए जैसे:

q = session.query(User).filter(User.email.like('%mysearchterm%')).all() 
परिणाम

यह वापस आ जाएगी बिल्कुल ठीक है, इसलिए मैं कैसे की तरह() विधि में शब्द लिखने का कर रहा हूँ के साथ कुछ है, लेकिन मैं वास्तव में यह कर सकते हैं यह पता नहीं है कि समस्या क्या है। यह शब्द अजाक्स पोस्ट से आ रहा है और मूल्य सर्वर-साइड पर है, बस। जैसा() इसे सही तरीके से उपयोग नहीं कर रहा है।

"कुछ भी उपयोगी नहीं" मेरा मतलब है कि आने वाले परिणामों के पहले सेटों में वास्तविक अवधि के साथ कोई लेना देना नहीं है, 3-4 से अधिक की अवधि के बाद कोई परिणाम वापस नहीं लौटाए जाने के बावजूद कोई परिणाम वापस नहीं लौटाया जाता है डीबी

किसी भी मदद की बहुत सराहना की।

+1

क्या आप सुनिश्चित हैं कि वह शब्द है जो आप उम्मीद करते हैं? यदि आप एक चर में स्ट्रिंग '%' + टर्म + '%' बनाते हैं, और वेरिएबल प्रिंट करते हैं, तो क्या आप जो उम्मीद कर रहे हैं उसे प्राप्त कर रहे हैं? साथ ही, "यह क्वेरी वास्तव में कुछ भी उपयोगी नहीं है" मतलब क्या है? अंत में, [लॉगिंग चालू करना] पर विचार करें (http://docs.sqlalchemy.org/en/rel_0_7/core/engines.html#configuring-logging) और यह देखते हुए कि SQL वास्तव में क्या उत्पन्न हुआ है। –

+0

मेरे फ्लास्क ऐप के अंदर की विधि में मैं क्वेरी को निष्पादित करने से पहले शब्द प्रिंट कर रहा हूं और मैं अपने कंसोल में शब्द को पॉप अप देख सकता हूं, इसलिए यह शब्द इसे फ़ंक्शन में बना रहा है। मैंने कंसोल में '%' + टर्म '%' और इसके आउटपुट% myterm% को प्रिंट करने का भी प्रयास किया। वास्तव में उपयोगी नहीं है मेरा मतलब है कि आने वाले परिणामों के पहले सेटों में शब्द के साथ कुछ भी नहीं है, abotu 3-4 वर्णों के बाद, कोई परिणाम नहीं लौटाया जाता है। – jduren

उत्तर

7

मुद्दे हल किए गए हैं। यह क्वेरी एक बड़े क्वेरी बिल्डर फ़ंक्शन के अंदर बैठी जिसने बाद में फ़ंक्शन में क्वेरी को सीमा और ऑफ़सेट लागू किया, क्योंकि रिटर्न और ऑफसेट वापस लौटाए गए परिणाम सेट के परिणामों की तुलना में अधिक था।

इसे खराब मानव त्रुटि और नींद की कमी के लिए चॉकलेट कर सकते हैं।

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