Bir etiket sütunu, "elma muzlu portakal" ve "çilekli muz limon" gibi değerlere sahiptir. SQLAlchemy eşdeğer ifadesini bulmak istiyorum
SELECT * FROM table WHERE tags LIKE "%banana%";
Bunu Class.query.filter()
yapmak için neye geçmeliyim ?
Bir etiket sütunu, "elma muzlu portakal" ve "çilekli muz limon" gibi değerlere sahiptir. SQLAlchemy eşdeğer ifadesini bulmak istiyorum
SELECT * FROM table WHERE tags LIKE "%banana%";
Bunu Class.query.filter()
yapmak için neye geçmeliyim ?
Yanıtlar:
Her sütunun içinde kullanılabilecek bir like()
yöntemi vardır query.filter()
. Bir arama dizesi verildiğinde %
, her iki yönde bir alt dize olarak aramak için her iki tarafa da bir karakter ekleyin .
tag = request.form["tag"]
search = "%{}%".format(tag)
posts = Post.query.filter(Post.tags.like(search)).all()
tags
etiket adını ve diğer etiket bilgileri depolamak tablo, ve sahip olacak task_tags
, tablo hangi göreve eklenen her etiket için bir kayıt olacaktır. Yani 2 etiketli görevin task_tags
tabloda sadece 2 kaydı olacaktır .
Yukarıdaki cevaba ek olarak, kim bir çözüm ararsa, "beğen" yerine "eşleştir" operatörü de deneyebilirsiniz. Önyargılı olmak istemiyorum ama Postgresql'de benim için mükemmel çalıştı.
Note.query.filter(Note.message.match("%somestr%")).all()
CONTAINS ve MATCH gibi veritabanı işlevlerini devralır . Ancak, SQLite'de mevcut değildir.
Daha fazla bilgi için Ortak Filtre Operatörlerine gidin
to_tsquery
gibi şeyler için metin operatörleri eklemenize izin verirsinizOR
AND
PostgreSQL kullanarak like
( yukarıda kabul cevaba bakınız benim için bir türlü iş vermedi) vakalar eşleşti rağmen , ancak ilike
(vaka i nsensisitive gibi ) yapar.
ILIKE
öğesinin büyük / küçük harfe duyarlı olmayan sürümü LIKE
olduğundan, girdileriniz yalnızca duruma göre farklılık gösterir.
Yerel sql kullanıyorsanız, koduma başvurabilirsiniz, aksi takdirde cevabımı göz ardı edebilirsiniz.
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()