В SQLAlchemy используйте select(Person).where(Person.user_id == target_id), затем получите scalar_one_or_none(). Передавайте значение параметром выражения, не собирайте SQL строковой интерполяцией.
Сформировать запрос к базе данных для получения пользователя по идентификатору
В SQLAlchemy используйте select(Person).where(Person.user_id == target_id), затем получите scalar_one_or_none(). Передавайте значение параметром выражения, не собирайте SQL строковой интерполяцией.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Составьте запрос к базе данных, который возвращает запись пользователя по заданному id.
class Person(Base):
user_id: Mapped[int]
username: Mapped[str]
Ответ
В SQLAlchemy используйте select(Person).where(Person.user_id == target_id), затем получите scalar_one_or_none(). Передавайте значение параметром выражения, не собирайте SQL строковой интерполяцией.
Пример при уже настроенной ORM-модели и Session:
from sqlalchemy import select
statement = select(Person).where(Person.user_id == target_id)
person = session.execute(statement).scalar_one_or_none()
Если user_id — первичный ключ, короче session.get(Person, target_id). Показанный класс неполон: для обычного declarative mapping нужны имя таблицы и первичный ключ. Отсутствующий пользователь даёт None; для HTTP-ответа это можно преобразовать в 404. Проверка полномочий на чтение записи нужна отдельно от поиска по id.