100 lines
3.2 KiB
Markdown
100 lines
3.2 KiB
Markdown
# sqlalchemy‑fastapi‑pydentic‑pytest
|
||
|
||
Изучительный пет‑проект для интеграции FastAPI, SQLAlchemy, Pydantic и Pytest.
|
||
|
||
---
|
||
|
||
## 🔍 Описание
|
||
|
||
Проект демонстрирует, как:
|
||
|
||
- работать с **FastAPI**: REST API эндпоинты, маршруты, зависимости и схемы;
|
||
- использовать **SQLAlchemy** для работы с базой данных: модели, сессии, CRUD‑операции;
|
||
- валидировать данные через **Pydantic**;
|
||
- тестировать всё через **Pytest**: модульные и интеграционные тесты.
|
||
|
||
Цель — собрать всё вместе и понять best practices.
|
||
|
||
---
|
||
|
||
## 📁 Структура проекта
|
||
|
||
```text
|
||
/
|
||
├── server/
|
||
│ ├── … # код FastAPI + SQLAlchemy + модели, схемы и маршруты
|
||
├── run.py # точка входа
|
||
├── requirements # зависимости
|
||
├── README.md # этот файл
|
||
├── .gitignore
|
||
└── Plan # план/заметки по проекту
|
||
```
|
||
|
||
---
|
||
|
||
## ⚙️ Установка и запуск
|
||
|
||
```bash
|
||
# клонировать репозиторий
|
||
git clone <URL репо>
|
||
cd sqlalchemy-fastapi-pydentic-pytest
|
||
|
||
# создать виртуальное окружение
|
||
python3 -m venv venv
|
||
source venv/bin/activate # в Linux/macOS
|
||
venv\Scripts\activate # в Windows
|
||
|
||
# установить зависимости
|
||
pip install -r requirements
|
||
|
||
# запустить приложение
|
||
python run.py
|
||
|
||
# по умолчанию запустится FastAPI‑сервер (напр. localhost:8000)
|
||
```
|
||
|
||
---
|
||
|
||
## 🧪 Тестирование
|
||
|
||
```bash
|
||
# запустить все тесты
|
||
pytest
|
||
```
|
||
|
||
Описание тестов:
|
||
|
||
- тесты на CRUD операции;
|
||
- тесты схем Pydantic;
|
||
- тесты ответов API (возможно с тестовым клиентом FastAPI).
|
||
|
||
---
|
||
|
||
## 🛠 Используемые технологии
|
||
|
||
| Компонент | Версия / Пример использования |
|
||
|-------------------|-------------------------------------|
|
||
| Python | ≥ 3.x |
|
||
| FastAPI | фреймворк для веб‑API |
|
||
| SQLAlchemy | ORM для работы с базой данных |
|
||
| Pydantic | валидация и сериализация данных |
|
||
| Pytest | тестирование |
|
||
|
||
---
|
||
|
||
## 🚧 Возможности для доработки / TODO
|
||
|
||
- добавление миграций (например, с Alembic);
|
||
- обработка ошибок и кастомные исключения;
|
||
- логирование;
|
||
- настройка CI/CD;
|
||
- защита маршрутов (аутентификация / авторизация);
|
||
- конфигурация через env‑переменные;
|
||
- более подробная документация API (например, OpenAPI схемы).
|
||
|
||
---
|
||
|
||
## 📄 Лицензия
|
||
|
||
Этот проект учебный.
|