BoCoder | Путь в IT
474 subscribers
517 photos
7 videos
3 files
412 links
Всем привет!
Здесь про мой путь в IT и саморазвитие

Мои социальные сети и сеть каналов
@BoCoder_Perehodnik


Админ/Связь: @BoCoder_Work
Download Telegram
Итоги дня:

🔺Изучение FastAPI

Сегодня я перешел к изучению баз данных в FastAPI
Я создал базу данных и подключился к ней. Пока все шло хорошо и получалось, но потом резко перестал работать zapret и у меня навернулся ютуб, восстановил все где-то через час, долго искал подходящую стратегию.

Как починил — продолжил.

Интегрировал базу данных с FastAPI, уже по увереннее пишу и понимаю код.
Интегрировал, сделал шаблоны для эндпойнтов и приступил к вставке данных в базу данных. Реализовал эндпойнт для этого, который добавляет книгу (1 фото), протестил, работает, возвращает {"ok": true}

Потом написал 2 эндпойнт который уже выводит все книги добавленные в бд (2 фото). Как раз втором эндпоинте возник затуп мой — немного запутался в логике сессий и запросов.
Разбирал по кусочкам разбирать код с ИИ, чтобы понять, где именно я мог тупануть.

В итоге: ошибки исправлены, база данных отвечает, а за одно и разобрал фулл код для большего понимания

Результат на 3 фото

Сегодня особо не углублялся, но всё очень даже хорошо понял: что к чему, куда и зачем. Даже в видео сказали, что пока этого достаточно. Написал мега базу крч
Но углубляться буду 100%, скорее всего, с понедельника — тогда уже начну писать пет-проект. Интересно, сколько времени это займет.

➡️ BoCoder | 💬 Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥63❤‍🔥2
День - 86

Доброго времени суток!

🔺Не знаю насколько это хорошее решение, но я решил уже сейчас начать писать простое Book Store API.
Думаю, что учиться по ходу дела будет гораздо лучше и легче.

Стек:
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




🖥Обязательные:

🔺1. Старт
Создание папки проекта, виртуального окружения. Установка библиотек для сегодняшней работы:
pip install fastapi uvicorn sqlalchemy asyncpg pydantic-settings


🔺2. Проверка, запуск сервера
Просто создать main.py, запустить и проверить сервер.

🔺3. База данных
Подключение к PostgreSQL.
Подготовка, создание пустой таблицы.
Работа с database.py и с models.py

Пока буду идти от простого к сложному. Сделаю основные модели Book и User, если все будет идти хорошо, то планирую добавить Author и Order
Также базовые роли admin и user

Свяжу код с бд и проверю создались ли вообще таблицы

Ну главное, чтоб бд и все заработало;)
Буду пробовать, пишите в комментариях,если я вдруг делаю полный бред, я рад хейту

Буду изучать нужную теорию по ходу дела, копаясь в доках, туториалах и общаться с ИИ


Всем желаю удачи и продуктивного дня!

#Day86 #Days

➡️ BoCoder | 💬 Chat
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
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥53
День - 87

Доброго времени суток!!

🔺Вчера все было успешно, сервер запустился, таблицы создались. Сегодня перехожу к оживлению проекта.
Буду учить API принимать данные от пользователя и сохранять их в базу.




🖥Обязательные:

🔺1. Создание схем (schemas.py)
Что это: Файл, где мы описываем правила для входящих данных.

Это нужно для того, чтобы данные сначала проходили проверку в схемах, а потом только попадали в базу models.py

Например: в схеме можно указать, что цена не может быть меньше 1 рубля, а название книги не может быть пустой строкой.

Создам файл schemas.py и буду описывать структуру книги для запроса и ответа

🔺2. Настроить правильное открытие и закрытие сессий базы данных через get_db.
Это нужно для того, чтоб бд работала стабильно без поломок

🔺3. Написать первый рабочий эндпоинт (POST /books)
Напишу функцию, которая примет JSON, пропустит его через схемы и создаст реальную запись в таблице.

🔺4. Все протестировать и правка багов (если будут)
Зайду в Swagger, создам пару книг и проверю их наличие в базе через терминал Linux командой SELECT * FROM books;
и тд


Всем желаю удачи и продуктивного дня!


#Day87 #Days

➡️ BoCoder | 💬 Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
4❤‍🔥332👍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 заработали маршруты:
1. POST /books/ — сохраняет книгу в базу и возвращает её с присвоенным ID
2. GET /books/ — выводит список всех книг из базы.

(4 фото main | 5 фото вывод книг | 6 фото таблички)

🔺Всё работает;)
В начале дня думал, что будет много ошибок и ничего не заработает, но оказалось наооборот. Все хорошо вообще, работает, я рад

Итоги дня в тик ток:
https://vt.tiktok.com/ZSmjCDw4y/

Поддержите🤪

➡️ BoCoder | 💬 Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥52👍1🔥1
💗 День - 88 💗

Доброе утро!
Поздравляю с 14 февраля;)

🔺Вообще сегодня думал отдохнуть, но некоторые планы отменились и освободилось время.
Так что продолжаю работу и изучение🐰




🖥Обязательные:

🔺1. Создание связи «Книга — Автор»

Сейчас автор — это просто строка, я решил создать модель Author (имя, биография) и связать книгу с автором через author_id.
Это позволит связывать сотни книг с одним автором

🔺2. Реализация Get Single Item (GET /books/{id})

Научу API находить одну
конкретную книгу по её ID
:
Если книга есть - показать
Если книги нет - 404 Not Found


(работа с HTTPException)

🔺3. Удаление и обновление (DELETE и PATCH)

Допишу оставшиеся функции в crud.py:
Delete: чтобы можно было удалять ошибочно созданные книги.
Patch: чтобы можно было менять цену или количество книг на складе

🔺4. Вынос эндпоинтов в routers.py

До конца отчищаю main.py, переношу логику книг в routers/books.py



Желаю всем продуктивно провести субботу!!❤️

#Day88 #Days

➡️ BoCoder | 💬 Chat
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, а весь обьект автора

🔺Итоговая структура проекта:
app/
├── main.py
├── database.py
├── models.py
├── schemas.py
├── crud.py
└── routers/
├── authors.py
└── books.py


На видео старался продемонстрировать весь код и его работу, пишите в комментариях, если видео не очень и лучше кидать скрины.

➡️ BoCoder | 💬 Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
653
День - 89

Доброго времени суток!




🖥Обязательные:

🔺1. Сделать вывод всех книг автора
Нужно добавить это, чтобы видеть не только имя писателя, но и весь список произведений

🔺2. Добавить поиск и фильтрацию
2.1 Поиск по названию

2.2 Фильтрация по цене

2.3 Пагинация
( чтобы API выдавало данные по порциям, не перегружая браузер и сервер )


🔺3. Обработка ошибок
Если что-то идет не так, то сервер выдаст некрасивую ошибку, я сделаю так, чтобы API само вежливо отвечала и указывала на ошибку



Всем продуктивного дня!

#Day89 #Days

➡️ BoCoder | 💬 Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥42👍2🔥111
Итоги дня:

🔺Изучение FastAPI

🔺Вывод всех книг автора
Теперь выводится не только имя автора, но и его книги

🔺Умная фильтрация (Depends)
внедрил профессиональный поиск. Теперь API умеет фильтровать книги по названию и цене, а также поддерживает пагинацию. Это важно для производительности базы данных

🔺Каскадное удаление
Реализовал эндпоинт DELETE /authors/{id} Теперь одним нажатием кнопки можно удалить автора вместе со всеми его книгами

🔺Обработка ошибок
Теперь при запросе несуществующих данных он возвращает 404 Not Found вместо пустоты.

➡️ BoCoder | 💬 Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍4🔥4
День - 90

Доброго времени суток!

🔺Сейчас грубо говоря финишная прямая идет

По планам вообще:
1. Доделать проект до 95 дня, исправить все ошибки. Добавлю более сильную валидацию, продвинутый поиск, глобальную обработку исключений, поработаю с JWT-аутентификацией

2. До 99 дня изучить основы Docker, пока просто базу

3. 100 День — выкладываю все на GitHub, подвожу итоги

Дальше я планирую немного переименовать свой путь, изучать
ИБ и публиковать лайфстайл.

Также думаю как раз освободится время и по активнее буду вести свой 2 канал @BoCoder_EDU

Про все конечно расскажу подробнее, но со временем




🖥Обязательные:

🔺1. Жёсткая валидация и "Защита от дурака"

Чуть углубляюсь в Pydantic, дорабатываю схемы:
🔺Валидация Авторов

🔺Валидация книг

🔺Безопасность поисковых фильтров


Цель: Доработать то, что я упустил в прошлых днях, усилить валидацию

🔺2. Практический тест

Буду пробовать «ломать» свой API
Проверю как все работает, если что-то не так, то буду чинить;)



Всем желаю продуктивного дня!!

#Day90 #Days

➡️ BoCoder | 💬 Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
5❤‍🔥4👍3🔥1