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
💡 Попробуй онлайн-тренажёр для подготовки к техническому собеседованию: clck.ru/3B5gwP 💡
Забирай роадмап изучения самого востребованного фреймворка на Python - FastAPI здесь: t.me/ArtemShumeikoBot
Тебя приятно слушать, продолжай делать полезные видосы. Спасибо
Спасибо 😉
Замечательный курс! Но этого урока нет в плейлисте!
Добавил
Спасибо
Наконец-то! Наконец-то я узнала, как расшифровать DTO) вокруг все употребляют, но объяснить не могут))
а dataclass как сериализовать из модели?
Планируешь ли ты создать курс по SQLAlchemy с задачами на Stepik? Я думаю, что такой курс был бы очень полезен, учитывая твой подход к обучению и отсутствия такого курса на просторах и-нета . И, вероятно, не только я столкнулся с нехваткой руконабивательных материалов по этой теме.
да, планирую ;)
А если у нас 2 файла со схемами. Первый юзер, а 2 резюме.
Получается, что юзеру нужен класс резюме, а резюме класс юзера. Вот уже циклический импорт. Если не импортировать класс, то "UserDTO" не работает.
Только если оба в 1 файл засунуть, только тогда они будут работать.
В той же алхимии Mapped[] позволяет не указывать явный импорт класса.
импортировать не нужно
просто в кавычках указываем название модели
Да, PyCharm будет ругаться.
Если хочется, чтобы IDE не ругался, импортировать нужно через if TYPE_CHECKING: import UserDTO
используй from typing import TYPE_CHECKING
if TYPE_CHECKING:
from models.user_models import User
Что-то в асинхронной версии не идет 🤔MissingGreenlet
pip install greenlet, надеюсь, поможет
Спасибо, исправил через expire_on_commit=False
"Почему не dataclass'ы скажу в конце видео". Не сказал...
Действительно.
Используя пайдантик между слоями мы намертво скрепляемся с ним. Между слоями конечно лучше датакласы гонять, но тогда писать придется ещё больше кода.
Получается нужны схема, датакласс и модель.
Байт на комментарии про белую тему ide
Белая тема это причина по которой программисты выгорают
Кто ловит такую же ошибку? Код полностью идентичен с репозиторием
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]
Победил через внесение параметра str в Enum'е:
class Workload(str, enum.Enum):
parttime = "parttime"
fulltime = "fulltime
без str почему-то не работало..
Если вы вместо 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