একটি ট্যাগ কলামে "আপেল কলা কমলা" এবং "স্ট্রবেরি কলা লেবু" এর মতো মান রয়েছে। আমি SQLAlchemy সমতুল্য বিবৃতিটি খুঁজতে চাই statement
SELECT * FROM table WHERE tags LIKE "%banana%";
এটি করার Class.query.filter()জন্য আমার কী পাস করা উচিত ?
একটি ট্যাগ কলামে "আপেল কলা কমলা" এবং "স্ট্রবেরি কলা লেবু" এর মতো মান রয়েছে। আমি SQLAlchemy সমতুল্য বিবৃতিটি খুঁজতে চাই statement
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 ট্যাগ সহ টাস্কটিতে কেবল 2 টি রেকর্ড থাকবে task_tags।
উপরের উত্তরে যোগ করা, যে কেউ সমাধানের সন্ধান করে, আপনি 'লাইক' না দিয়ে 'ম্যাচ' অপারেটরটি চেষ্টা করতে পারেন। পক্ষপাতদুষ্ট হতে চাই না তবে পোস্টগ্র্রেসক্লিতে এটি আমার পক্ষে নিখুঁতভাবে কাজ করেছে।
Note.query.filter(Note.message.match("%somestr%")).all()
এটা তোলে ডাটাবেসের ফাংশন যেমন উত্তরাধিকারী হিসাবে উপস্থিত আছে এবং ম্যাচ । তবে এটি এসকিউএলাইটে উপলভ্য নয়।
আরও তথ্যের জন্য কমন ফিল্টার অপারেটর যান
to_tsqueryআপনি ভালো জিনিস জন্য পাঠ্য অপারেটার যোগ করতে দেয় যা ORএবং AND postgresql.org/docs/current/...
এই কোড চেষ্টা করুন
output = dbsession.query(<model_class>).filter(<model_calss>.email.ilike('%' + < email > + '%'))
পোস্টগ্রিসএসকিউএল ব্যবহার করে like( উপরে গৃহীত উত্তর দেখুন ) কেসগুলি মিলে গেলেও কোনওভাবে আমার পক্ষে কাজ করেনি , তবে ilike(কেস আমি সংবেদনশীলের মতো ) করি না।
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()