Итоги дня:
🔺 Изучение FastAPI
Сегодня я перешел к изучению баз данных в FastAPI
Я создал базу данных и подключился к ней. Пока все шло хорошо и получалось, но потом резко перестал работать zapret и у меня навернулся ютуб, восстановил все где-то через час, долго искал подходящую стратегию.
Как починил — продолжил.
Интегрировал базу данных с FastAPI, уже по увереннее пишу и понимаю код.
Интегрировал, сделал шаблоны для эндпойнтов и приступил к вставке данных в базу данных. Реализовал эндпойнт для этого, который добавляет книгу (1 фото), протестил, работает, возвращает {"ok": true}
Потом написал 2 эндпойнт который уже выводит все книги добавленные в бд (2 фото). Как раз втором эндпоинте возник затуп мой — немного запутался в логике сессий и запросов.
Разбирал по кусочкам разбирать код с ИИ, чтобы понять, где именно я мог тупануть.
В итоге: ошибки исправлены, база данных отвечает, а за одно и разобрал фулл код для большего понимания
Результат на 3 фото
Сегодня особо не углублялся, но всё очень даже хорошо понял: что к чему, куда и зачем. Даже в видео сказали, что пока этого достаточно. Написал мега базу крч
Но углубляться буду 100%, скорее всего, с понедельника — тогда уже начну писать пет-проект. Интересно, сколько времени это займет.
➡️ BoCoder | 💬 Chat
Сегодня я перешел к изучению баз данных в FastAPI
Я создал базу данных и подключился к ней. Пока все шло хорошо и получалось, но потом резко перестал работать zapret и у меня навернулся ютуб, восстановил все где-то через час, долго искал подходящую стратегию.
Как починил — продолжил.
Интегрировал базу данных с FastAPI, уже по увереннее пишу и понимаю код.
Интегрировал, сделал шаблоны для эндпойнтов и приступил к вставке данных в базу данных. Реализовал эндпойнт для этого, который добавляет книгу (1 фото), протестил, работает, возвращает {"ok": true}
Потом написал 2 эндпойнт который уже выводит все книги добавленные в бд (2 фото). Как раз втором эндпоинте возник затуп мой — немного запутался в логике сессий и запросов.
Разбирал по кусочкам разбирать код с ИИ, чтобы понять, где именно я мог тупануть.
В итоге: ошибки исправлены, база данных отвечает, а за одно и разобрал фулл код для большего понимания
Результат на 3 фото
Сегодня особо не углублялся, но всё очень даже хорошо понял: что к чему, куда и зачем. Даже в видео сказали, что пока этого достаточно. Написал мега базу крч
Но углубляться буду 100%, скорее всего, с понедельника — тогда уже начну писать пет-проект. Интересно, сколько времени это займет.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤3❤🔥2
Думаю, что учиться по ходу дела будет гораздо лучше и легче.
Стек:
Python 3.12
FastAPI
PostgreSQL
SQLAlchemy 2.0 (async)
Alembic
Pydantic v2
JWT аутентификация
Примерная структура проекта:
app/
├── main.py
├── config.py
├── database.py
├── models.py
├── schemas.py
├── crud.py
├── security.py
├── dependencies.py
└── routers/
├── auth.py
├── books.py
├── authors.py
└── orders.py
Написание API разобью по маленьким этапам.
Сегодня буду работать с models.py и database.py
🖥 Обязательные:
Создание папки проекта, виртуального окружения. Установка библиотек для сегодняшней работы:
pip install fastapi uvicorn sqlalchemy asyncpg pydantic-settings
Просто создать main.py, запустить и проверить сервер.
Подключение к PostgreSQL.
Подготовка, создание пустой таблицы.
Работа с database.py и с models.py
Пока буду идти от простого к сложному. Сделаю основные модели Book и User, если все будет идти хорошо, то планирую добавить Author и Order
Также базовые роли admin и user
Свяжу код с бд и проверю создались ли вообще таблицы
Ну главное, чтоб бд и все заработало;)
Буду пробовать, пишите в комментариях,если я вдруг делаю полный бред, я рад хейту
Буду изучать нужную теорию по ходу дела, копаясь в доках, туториалах и общаться с ИИ
Всем желаю удачи и продуктивного дня!
#Day86 #Days
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍2🔥2
Итоги дня:
🔺 Изучение FastAPI
Сегодня я решил начать применять свои знания на практике и писать самый простенький пет проект Book Store API.
Что успел реализовать:
🔺 Архитектура проекта:
Разделил логику на модули (config, database, models, main и тд). Задел на будущее
🔺 Стек: FastAPI + PostgreSQL.
Для работы с базой выбрал асинхронную SQLAlchemy 2.0 (современный декларативный стиль Mapped).
Описал первые таблицы User и Book. Пока все таки не стал лезть в сложные связи с Orders и Author, думаю, что пока не хватит опыта, чтоб понять. А копировать с других проектов или с ИИ без понимания не охота. Хочу понимать как и что работает. (3 фото models)
Попрактикую CRUD-операции на простых моделях и потом буду усложнять
Сервер запускается, таблицы создаются.
На 1 и 2 фото мои таблички;)
Также настроил управление конфигурациями через Pydantic-settings и файл .env
Пароли не улетят в репозиторий благодаря .gitignore, сразу начал прописывать его.
Вроде все, завтра думаю будет по плотнее день и реализую уже по больше всего.
➡️ BoCoder | 💬 Chat
Сегодня я решил начать применять свои знания на практике и писать самый простенький пет проект Book Store API.
Что успел реализовать:
Разделил логику на модули (config, database, models, main и тд). Задел на будущее
Для работы с базой выбрал асинхронную SQLAlchemy 2.0 (современный декларативный стиль Mapped).
Описал первые таблицы User и Book. Пока все таки не стал лезть в сложные связи с Orders и Author, думаю, что пока не хватит опыта, чтоб понять. А копировать с других проектов или с ИИ без понимания не охота. Хочу понимать как и что работает. (3 фото models)
Попрактикую CRUD-операции на простых моделях и потом буду усложнять
Сервер запускается, таблицы создаются.
На 1 и 2 фото мои таблички;)
Также настроил управление конфигурациями через Pydantic-settings и файл .env
Пароли не улетят в репозиторий благодаря .gitignore, сразу начал прописывать его.
Вроде все, завтра думаю будет по плотнее день и реализую уже по больше всего.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥5❤3
Буду учить API принимать данные от пользователя и сохранять их в базу.
🖥 Обязательные:
Что это: Файл, где мы описываем правила для входящих данных.
Это нужно для того, чтобы данные сначала проходили проверку в схемах, а потом только попадали в базу models.py
Например: в схеме можно указать, что цена не может быть меньше 1 рубля, а название книги не может быть пустой строкой.
Создам файл schemas.py и буду описывать структуру книги для запроса и ответа
Это нужно для того, чтоб бд работала стабильно без поломок
Напишу функцию, которая примет JSON, пропустит его через схемы и создаст реальную запись в таблице.
Зайду в Swagger, создам пару книг и проверю их наличие в базе через терминал Linux командой SELECT * FROM books;
и тд
Всем желаю удачи и продуктивного дня!
#Day87 #Days
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4❤🔥3 3 2👍1
Итоги дня:
🔺 Изучение FastAPI
🔺 Валидация через Pydantic (schemas.py)
Реализовал схемы для книг.
Теперь данные проверяются до попадания в базу. Если цена книги будет отрицательной или название пустым, API само выдаст ошибку, защищая базу от мусора.
Пока реализовал только с Books тк с Users логика вроде как по сложнее и решил отложить на дальнейшее развитие и написание проекта.
(1 фото)
🔺 Настроил «Умный кран» (get_db)
В файле database.py появилась функция-генератор get_db
Теперь сессии к базе данных теперь открываются ровно на время запроса и автоматически закрываются после него. Это дает гарантию ,что PostgreSQL не «упадет» от большого количества открытых соединений.
(2 фото)
🔺 По совету из чата создал crud.py
Всю логика работы с SQLAlchemy вынес в отдельное место.
Теперь main.py не перегружен лишним кодом, и вносить правки будет гораздо легче
Также по совету много где внедрил Annotated для чистого кода, спасибо
(3 фото crud)
🔺 Оживил API (Эндпоинты)
В app/main.py заработали маршруты:
(4 фото main | 5 фото вывод книг | 6 фото таблички)
🔺 Всё работает;)
В начале дня думал, что будет много ошибок и ничего не заработает, но оказалось наооборот. Все хорошо вообще, работает, я рад
Итоги дня в тик ток:
https://vt.tiktok.com/ZSmjCDw4y/
Поддержите🤪
➡️ BoCoder | 💬 Chat
Реализовал схемы для книг.
Теперь данные проверяются до попадания в базу. Если цена книги будет отрицательной или название пустым, API само выдаст ошибку, защищая базу от мусора.
Пока реализовал только с Books тк с Users логика вроде как по сложнее и решил отложить на дальнейшее развитие и написание проекта.
(1 фото)
В файле database.py появилась функция-генератор get_db
Теперь сессии к базе данных теперь открываются ровно на время запроса и автоматически закрываются после него. Это дает гарантию ,что PostgreSQL не «упадет» от большого количества открытых соединений.
(2 фото)
Всю логика работы с SQLAlchemy вынес в отдельное место.
Теперь main.py не перегружен лишним кодом, и вносить правки будет гораздо легче
Также по совету много где внедрил Annotated для чистого кода, спасибо
(3 фото crud)
В app/main.py заработали маршруты:
1. POST /books/ — сохраняет книгу в базу и возвращает её с присвоенным ID
2. GET /books/ — выводит список всех книг из базы.
(4 фото main | 5 фото вывод книг | 6 фото таблички)
В начале дня думал, что будет много ошибок и ничего не заработает, но оказалось наооборот. Все хорошо вообще, работает, я рад
Итоги дня в тик ток:
https://vt.tiktok.com/ZSmjCDw4y/
Поддержите
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥5❤2👍1🔥1
Поздравляю с 14 февраля;)
Так что продолжаю работу и изучение
🖥 Обязательные:
Сейчас автор — это просто строка, я решил создать модель Author (имя, биография) и связать книгу с автором через author_id.
Это позволит связывать сотни книг с одним автором
Научу API находить одну
конкретную книгу по её ID:
Если книга есть - показать
Если книги нет - 404 Not Found
(работа с HTTPException)
Допишу оставшиеся функции в crud.py:
Delete: чтобы можно было удалять ошибочно созданные книги.
Patch: чтобы можно было менять цену или количество книг на складе
До конца отчищаю main.py, переношу логику книг в routers/books.py
Желаю всем продуктивно провести субботу!!
#Day88 #Days
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10❤🔥5🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
Итоги дня:
🔺 Изучение FastAPI
Решил продемонстрировать результат в виде видео, надеюсь, что все видно
Ну лан, если нужно будет вам какие-то скрины, то по просьбе закину в комментарии
🔺 Работа с Базами Данных и Связями
1. Создал полноценную связь между таблицами authors и books. Теперь каждая книга привязана к автору через ForeignKey
(на видео показал как происходит привязка, надеюсь,что видно)
2. Также при удалении автора удаляются и все его книги, не оставляя мусора
3. Немного освоил joinedload. Это позволило базе данных доставать книгу и автора одним эффективным SQL-запросом (JOIN) вместо нескольких медленных.
🔺 Архитектура и Рефакторинг
1. Переписал модели полностью, внедрив ко всему декларативные типы Mapped и mapped_column.
2. Использование Annotated
Создал переиспользуемые типы данных (например, pk_id, optional_str) для чистоты кода
3. Модульность (APIRouter)
Разделил проект на части. Создал новую директорию routers для эндпоинтов теперь маршруты книг и авторов находятся там. main.py больше не будет перегружен.
🔺 Решение Проблем
1. Столкнулся с ошибкой MissingGreenlet, она вроде как самая частая у асинхронной SQLAlchemy.
Решил проблему правильно подгружая связанные данные до того, как сессия закроется
2. Валидация ответов
Настроил влож схемы Pydantic так, что теперь при запросе книги API возвращает не просто ID, а весь обьект автора
🔺 Итоговая структура проекта:
На видео старался продемонстрировать весь код и его работу, пишите в комментариях, если видео не очень и лучше кидать скрины.
➡️ BoCoder | 💬 Chat
Решил продемонстрировать результат в виде видео, надеюсь, что все видно
Ну лан, если нужно будет вам какие-то скрины, то по просьбе закину в комментарии
1. Создал полноценную связь между таблицами authors и books. Теперь каждая книга привязана к автору через ForeignKey
(на видео показал как происходит привязка, надеюсь,что видно)
2. Также при удалении автора удаляются и все его книги, не оставляя мусора
3. Немного освоил joinedload. Это позволило базе данных доставать книгу и автора одним эффективным SQL-запросом (JOIN) вместо нескольких медленных.
1. Переписал модели полностью, внедрив ко всему декларативные типы Mapped и mapped_column.
2. Использование Annotated
Создал переиспользуемые типы данных (например, pk_id, optional_str) для чистоты кода
3. Модульность (APIRouter)
Разделил проект на части. Создал новую директорию routers для эндпоинтов теперь маршруты книг и авторов находятся там. main.py больше не будет перегружен.
1. Столкнулся с ошибкой MissingGreenlet, она вроде как самая частая у асинхронной SQLAlchemy.
Решил проблему правильно подгружая связанные данные до того, как сессия закроется
2. Валидация ответов
Настроил влож схемы Pydantic так, что теперь при запросе книги API возвращает не просто ID, а весь обьект автора
app/
├── main.py
├── database.py
├── models.py
├── schemas.py
├── crud.py
└── routers/
├── authors.py
└── books.py
На видео старался продемонстрировать весь код и его работу, пишите в комментариях, если видео не очень и лучше кидать скрины.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6 5 3
🖥 Обязательные:
Нужно добавить это, чтобы видеть не только имя писателя, но и весь список произведений
2.1 Поиск по названию
2.2 Фильтрация по цене
2.3 Пагинация
( чтобы API выдавало данные по порциям, не перегружая браузер и сервер )
Если что-то идет не так, то сервер выдаст некрасивую ошибку, я сделаю так, чтобы API само вежливо отвечала и указывала на ошибку
Всем продуктивного дня!
#Day89 #Days
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥4❤2👍2🔥1 1 1
Итоги дня:
🔺 Изучение FastAPI
🔺 Вывод всех книг автора
Теперь выводится не только имя автора, но и его книги
🔺 Умная фильтрация (Depends)
внедрил профессиональный поиск. Теперь API умеет фильтровать книги по названию и цене, а также поддерживает пагинацию. Это важно для производительности базы данных
🔺 Каскадное удаление
Реализовал эндпоинт DELETE /authors/{id} Теперь одним нажатием кнопки можно удалить автора вместе со всеми его книгами
🔺 Обработка ошибок
Теперь при запросе несуществующих данных он возвращает 404 Not Found вместо пустоты.
➡️ BoCoder | 💬 Chat
Теперь выводится не только имя автора, но и его книги
внедрил профессиональный поиск. Теперь API умеет фильтровать книги по названию и цене, а также поддерживает пагинацию. Это важно для производительности базы данных
Реализовал эндпоинт DELETE /authors/{id} Теперь одним нажатием кнопки можно удалить автора вместе со всеми его книгами
Теперь при запросе несуществующих данных он возвращает 404 Not Found вместо пустоты.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍4🔥4
По планам вообще:
1. Доделать проект до 95 дня, исправить все ошибки. Добавлю более сильную валидацию, продвинутый поиск, глобальную обработку исключений, поработаю с JWT-аутентификацией
2. До 99 дня изучить основы Docker, пока просто базу
3. 100 День — выкладываю все на GitHub, подвожу итоги
Дальше я планирую немного переименовать свой путь, изучать
ИБ и публиковать лайфстайл.
Также думаю как раз освободится время и по активнее буду вести свой 2 канал @BoCoder_EDU
Про все конечно расскажу подробнее, но со временем
🖥 Обязательные:
Чуть углубляюсь в Pydantic, дорабатываю схемы:
🔺 Валидация Авторов🔺 Валидация книг🔺 Безопасность поисковых фильтров
Цель: Доработать то, что я упустил в прошлых днях, усилить валидацию
Буду пробовать «ломать» свой API
Проверю как все работает, если что-то не так, то буду чинить;)
Всем желаю продуктивного дня!!
#Day90 #Days
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5❤🔥4👍3🔥1