एक टैग कॉलम में "सेब केला नारंगी" और "स्ट्रॉबेरी केला नींबू" जैसे मूल्य हैं। मैं SQLAlchemy के समकक्ष कथन खोजना चाहता हूं
SELECT * FROM table WHERE tags LIKE "%banana%";
इसे करने के Class.query.filter()
लिए मुझे क्या करना चाहिए ?
एक टैग कॉलम में "सेब केला नारंगी" और "स्ट्रॉबेरी केला नींबू" जैसे मूल्य हैं। मैं SQLAlchemy के समकक्ष कथन खोजना चाहता हूं
SELECT * FROM table WHERE tags LIKE "%banana%";
इसे करने के Class.query.filter()
लिए मुझे क्या करना चाहिए ?
जवाबों:
प्रत्येक स्तंभ में like()
विधि है, जिसका उपयोग किया जा सकता है query.filter()
। एक खोज स्ट्रिंग को देखते हुए, %
दोनों दिशाओं में एक विकल्प के रूप में खोज करने के लिए दोनों ओर एक चरित्र जोड़ें ।
tag = request.form["tag"]
search = "%{}%".format(tag)
posts = Post.query.filter(Post.tags.like(search)).all()
tags
तालिका होगी , जहां आप टैग नाम और अन्य टैग जानकारी संग्रहीत करते हैं, और आपके पास task_tags
तालिका होगी , जो टास्क में जोड़े गए प्रत्येक टैग के लिए एक रिकॉर्ड होगा। इसलिए 2 टैग वाले कार्य में task_tags
तालिका में केवल 2 रिकॉर्ड होंगे ।
उपरोक्त उत्तर को जोड़ते हुए, जो कोई भी समाधान खोजता है, आप 'जैसे' के बजाय 'मैच' ऑपरेटर को भी आज़मा सकते हैं। पक्षपाती नहीं होना चाहते लेकिन यह पूरी तरह से मेरे लिए Postgresql में काम करता है।
Note.query.filter(Note.message.match("%somestr%")).all()
यह डेटाबेस कार्यों जैसे CONTAINS और MATCH को विरासत में मिला है । हालाँकि, यह SQLite में उपलब्ध नहीं है।
अधिक जानकारी के लिए कॉमन फ़िल्टर ऑपरेटर्स जाएं
to_tsquery
तुम जैसी चीजों के लिए पाठ ऑपरेटरों जोड़ने देता है जो OR
और AND
postgresql.org/docs/current/...
PostgreSQL का उपयोग करते हुए like
( ऊपर स्वीकार किए जाते हैं जवाब देखने के ) किसी भी तरह काम नहीं किया था मेरे लिए हालांकि मामलों का मिलान नहीं हुआ है, लेकिन ilike
(मामले मैं nsensisitive की तरह ) है।
ILIKE
केस-असंवेदनशील संस्करण है LIKE
, इसलिए आपके इनपुट केवल मामले में भिन्न हैं।
यदि आप मूल वर्ग का उपयोग करते हैं, तो आप मेरे कोड का उल्लेख कर सकते हैं, अन्यथा केवल मेरे उत्तर को अनदेखा करें।
SELECT * FROM table WHERE tags LIKE "%banana%";
from sqlalchemy import text
bar_tags = "banana"
# '%' attention to spaces
query_sql = """SELECT * FROM table WHERE tags LIKE '%' :bar_tags '%'"""
# db is sqlalchemy session object
tags_res_list = db.execute(text(query_sql), {"bar_tags": bar_tags}).fetchall()