SQLAlchemy results to Pydantic schema using FastAPI #11

Поділитися
Вставка
  • Опубліковано 10 чер 2024
  • 💡 Попробуй онлайн-тренажёр для подготовки к техническому собеседованию: clck.ru/3B5gxT 💡
    Предзапись на курс по поиску работы разработчику и техническим навыкам для Middle: forms.gle/Zw7bPnQvTsfekVH47
    Забирай роадмап изучения самого востребованного фреймворка на Python - FastAPI здесь: t.me/ArtemShumeikoBot
    Все вопросы по SQLAlchemy обсуждаем в телеграм сообществе: t.me/python_community_rus
    Мой телеграм канал о жизни разработчика: t.me/artemshumeiko
    Полезные материалы для бэкендера в моем телеграм боте: t.me/ArtemShumeikoBot?start=eXQ
    Репозиторий на Github с кодом из видео: t.me/artemshumeiko/28
    Поддержать меня и получить ранний доступ к видео можно здесь: boosty.to/artemshumeiko
    Мощная связка FastAPI + SQLAlchemy + Pydantic.
    0:00 - DTO модели Pydantic
    4:00 - Без relationship
    6:53 - С relationship
    7:53 - JOIN
    10:40 - Интерактивный фронтенд + FastAPI

КОМЕНТАРІ • 22

  • @artemshumeiko
    @artemshumeiko  7 місяців тому +1

    💡 Попробуй онлайн-тренажёр для подготовки к техническому собеседованию: clck.ru/3B5gwP 💡
    Забирай роадмап изучения самого востребованного фреймворка на Python - FastAPI здесь: t.me/ArtemShumeikoBot

  • @romankuznetsov4601
    @romankuznetsov4601 6 місяців тому +1

    Тебя приятно слушать, продолжай делать полезные видосы. Спасибо

  • @Ardbot
    @Ardbot 6 місяців тому +1

    Замечательный курс! Но этого урока нет в плейлисте!

  • @Elena-ux2kb
    @Elena-ux2kb 6 місяців тому +2

    Наконец-то! Наконец-то я узнала, как расшифровать DTO) вокруг все употребляют, но объяснить не могут))

  • @sergeysergey421
    @sergeysergey421 4 місяці тому

    а dataclass как сериализовать из модели?

  • @yurarusanovskii
    @yurarusanovskii 6 місяців тому +1

    Планируешь ли ты создать курс по SQLAlchemy с задачами на Stepik? Я думаю, что такой курс был бы очень полезен, учитывая твой подход к обучению и отсутствия такого курса на просторах и-нета . И, вероятно, не только я столкнулся с нехваткой руконабивательных материалов по этой теме.

  • @dmitry-lz1ny
    @dmitry-lz1ny 3 місяці тому

    А если у нас 2 файла со схемами. Первый юзер, а 2 резюме.
    Получается, что юзеру нужен класс резюме, а резюме класс юзера. Вот уже циклический импорт. Если не импортировать класс, то "UserDTO" не работает.
    Только если оба в 1 файл засунуть, только тогда они будут работать.
    В той же алхимии Mapped[] позволяет не указывать явный импорт класса.

    • @artemshumeiko
      @artemshumeiko  3 місяці тому

      импортировать не нужно
      просто в кавычках указываем название модели
      Да, PyCharm будет ругаться.
      Если хочется, чтобы IDE не ругался, импортировать нужно через if TYPE_CHECKING: import UserDTO

    • @xesax
      @xesax 2 місяці тому +1

      используй from typing import TYPE_CHECKING
      if TYPE_CHECKING:
      from models.user_models import User

  • @ArtLosev
    @ArtLosev 2 місяці тому

    Что-то в асинхронной версии не идет 🤔MissingGreenlet

    • @artemshumeiko
      @artemshumeiko  2 місяці тому

      pip install greenlet, надеюсь, поможет

    • @ArtLosev
      @ArtLosev 2 місяці тому

      Спасибо, исправил через expire_on_commit=False

  • @dimuha82
    @dimuha82 4 місяці тому +2

    "Почему не dataclass'ы скажу в конце видео". Не сказал...

    • @dmitry-lz1ny
      @dmitry-lz1ny 3 місяці тому

      Действительно.
      Используя пайдантик между слоями мы намертво скрепляемся с ним. Между слоями конечно лучше датакласы гонять, но тогда писать придется ещё больше кода.
      Получается нужны схема, датакласс и модель.

  • @max_z0rn
    @max_z0rn 6 місяців тому +1

    Байт на комментарии про белую тему ide

    • @yarko6734
      @yarko6734 6 місяців тому +1

      Белая тема это причина по которой программисты выгорают

  • @user-oc5sd1jw4n
    @user-oc5sd1jw4n 6 місяців тому +1

    Кто ловит такую же ошибку? Код полностью идентичен с репозиторием
    pydantic_core._pydantic_core.ValidationError: 2 validation errors for WorkersRelDTO
    resumes.0.workload
    Input should be 'parttime' or 'fulltime' [type=enum, input_value=, input_type=Workload]
    resumes.1.workload
    Input should be 'parttime' or 'fulltime' [type=enum, input_value=, input_type=Workload]

    • @user-oc5sd1jw4n
      @user-oc5sd1jw4n 6 місяців тому +1

      Победил через внесение параметра str в Enum'е:
      class Workload(str, enum.Enum):
      parttime = "parttime"
      fulltime = "fulltime
      без str почему-то не работало..

  • @ez9723
    @ez9723 4 місяці тому

    Если вы вместо id: int используете UUID, а в ДТО хотите str и ловите ошибку приведения, то мне помогло такое
    from uuid import UUID
    class WorkerDTO(WorkerAddDTO):
    id: UUID
    @field_validator("id")
    def validate_uuids(cls, value):
    if value:
    return str(value)
    return value