данные, которые я фильтрую, представляют собой эпизоды, которые имеют отношения «многие ко многим» с гуру, у каждого из которых есть имя
Ввод поиска в формате htmx
Код: Выделить всё
Filter By Guru
в случае SearchKind = = 'guru' я сначала фильтрую гуру, которые содержат search_str, затем, благодаря sqlmodel, использую простой Python для получения связанных эпизодов.
Код: Выделить всё
from sqlalchemy import func
from sqlmodel import select
stmt = select(Guru).where(
func.lower(Guru.name).like(f'%{search_str.lower()}%')
)
matching_gurus = session.exec(stmt).all()
matching_episodes = {ep for guru in matching_gurus for ep in guru.episodes}
return sorted(list(matching_episodes), key=lambda ep: ep.date, reverse=True)
также могу ли я сократить это до одного вызова базы данных для большей эффективности? есть ли способ sqlmodel для поиска без учета регистра? я чувствую, что база данных - лучшее место для выполнения этих операций, но, возможно, sqlmodel все равно делает это под капотом?
и, что более важно, неявно защищает ли sqlmodel меня от sql-инъекций? даже при использовании функции sqlalchemy?
и, наконец, какие еще проблемы/улучшения вы можете заметить?
большое спасибо!< /п>
Подробнее здесь: https://stackoverflow.com/questions/784 ... d-security