Sqlmodel/alchemy выборочный поиск и безопасностьPython

Программы на Python
Anonymous
Sqlmodel/alchemy выборочный поиск и безопасность

Сообщение Anonymous »

я использую htmx и sqlmodel для фильтрации и возврата данных через fastapi.
данные, которые я фильтрую, представляют собой эпизоды, которые имеют отношения «многие ко многим» с гуру, у каждого из которых есть имя
Ввод поиска в формате htmx

Код: Выделить всё

Filter By Guru







поисковой запрос поступает на мой маршрут fastapi с SearchKind и search_str
в случае 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)
Я не особо часто использовал sqlalchemy, но использую func, чтобы включить поиск без учета регистра в сочетании с сеансом sqlmodel. можно ли смешивать и сочетать sqlmodel и sqlalchemy вот так? я имею в виду, что все работает нормально....
также могу ли я сократить это до одного вызова базы данных для большей эффективности? есть ли способ sqlmodel для поиска без учета регистра? я чувствую, что база данных - лучшее место для выполнения этих операций, но, возможно, sqlmodel все равно делает это под капотом?
и, что более важно, неявно защищает ли sqlmodel меня от sql-инъекций? даже при использовании функции sqlalchemy?
и, наконец, какие еще проблемы/улучшения вы можете заметить?
большое спасибо!< /п>

Подробнее здесь: https://stackoverflow.com/questions/784 ... d-security

Вернуться в «Python»