Найти в Дзене
Computer Pro

SQLAlchemy, many-to-many, создаём связь многие-ко-многим #10

Продолжаем изучать ORM SQLAlchemy, начало было тут:

На данный момент у нас есть модель worker и модель resume и нашей платформе явно не хватает модели с вакансиями, создадим её:

-2

Теперь нам нужно связать модель резюме с моделью вакансий. Связь многие ко многим реализуется через дополнительную таблицу, для этого создадим еще один класс который и будет связывать классы вакансий и резюме, и назовем его что-то типа "ответы на резюме" (VacanciesRepliesORM):

-3

После создания связующего класса, можно указать relationship в классе VacanciesORM:

-4

И в классе резюме так же прописать связь relationship с вакансиями:

-5

Ну вот осталось создать запрос с какой-нибудь вакансией и чтобы на эту вакансию откликнулись (пусть будет 2) резюме, сразу пропишем в main.py вызов этой функции:

-6
-7

Да, вызов запуска сервера я пока приостановил:

-8

Всё отработалось, создались дополнительные таблицы и наполнились данными, посмотрим как это выглядит в DBEaver:

-9
-10

Теперь получим эти данные, преобразуем в DTO (см. предыдущую статью), конвертируем в JSON формат и пусть эти данные выдает веб-сервер.

Получаем данные и преобразуем в DTO (Data transfer object (объект передачи данных)):

-11

Создадим классы для преобразование к DTO:

-12

Добавим еще одну конечную точку, с вакансиями и разблокируем запуск веб-сервера:

-13

Теперь можно пройти по адресу http://127.0.0.1:8000/vacancies можно увидеть полученные данные, правда не в таком красивом виде как в предыдущей статье, ибо сейчас я не стал заморачиваться с созданием второго веб-сервера, в качестве клиента. Можно посмотреть в браузере, причем хром-подобный браузер выдает в текстовом виде данные:

-14

А FireFox упорядочивает в структуру, и можно удобно читать полученные данные:

-15

Либо можно вообще в консоли сделать запрос и получить ответ:

-16

Ну вот вроде бы и все что я хотел сегодня написать. Осталась последняя тема "про миграции баз данных". Ну и 21 домашняя работа в SkillBox посвященная этой же теме. После чего закончу цикл статей об SQLAlchemy и продолжу изучать другие темы курса python_advanced.