Сформировать запрос к базе данных для получения пользователя по идентификатору

В 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.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее