Skip to content

Проект представляет собой пример интеграции и взаимодействия Pydantic 2.0+SQLAlchemy_ORM+PostgreSQL+asyncpg.

License

Notifications You must be signed in to change notification settings

Abramov0Alexandr/FastAPI-asyncpg-sqlalchemy

Repository files navigation

FastAPI-asyncpg-sqlalchemy

❗ Проект находится на стадии написания и не отображает итогового результата❗

О проекте

Проект представляет собой пример интеграции и взаимодействия Pydantic 2.0 в связке с SQLAlchemy ORM и PostgreSQL, подключенной через асинхронную библиотеку взаимодействия с базами данных asyncpg.

Основные цели, которые ставились перед проектом:

  • максимальная скорость работы
  • использование асинхронных операций
  • организация структуры проекта согласно лучшим практикам
  • аутентификацию пользователей (JWT + cookie)
  • написание асинхронных тестов (httpx + pytest-asyncio)
  • соблюдение правил написания (pre-commit-hooks + black + flake8 + reorder-python-imports)
  • кеширование маршрутов (fastapi-cache2)

Стек технологий:

  • python
  • fastapi
  • sqlalchemy
  • asyncpg
  • alembic
  • pydantic
  • ipython
  • passlib
  • python-slugify
  • httpx
  • pytest-asyncio
  • pre-commit
  • black
  • pyjwt
  • fastapi-cache2

Установка

Прежде чем начать использовать FastAPI-asyncpg-sqlalchemy, убедитесь, что у вас установлен интерпретатор Python c версией не ниже 3.9:

Клонируйте репозиторий с помощью следующей команды:

git clone git@github.com:Abramov0Alexandr/FastAPI-asyncpg-sqlalchemy.git

Перейдите в директорию проекта:

cd FastAPI-asyncpg-sqlalchemy

Активируйте виртуальное окружение Poetry и установите зависимости:

poetry init poetry shell poetry install

Создайте .env файл в основной директории проекта, который будет содержать основные настройки для взаимодействия с базой данных.

touch .env

Структура проекта:

 . |-- app |-- migrations |-- .env ## NEW FILE! |-- .env.sample |-- .gitignore |-- .pre-commit-config.yaml |-- alembic.ini |-- LICENSE |-- poetry.lock |-- pyproject.toml |-- README.md |-- setup.cfg  

Создайте базу данных, которая будет использоваться в проекте:

psql -U <database username> create database <your database title>;

Заполните .env файл. Необходимые переменные можно увидеть в .env.sample:

vim .env
 DB_USER="your database username" DB_PASSWORD="your database password" DB_HOST="default is localhost" DB_PORT="default is 5432" DB_NAME="your database title" TOKEN_LIFESPAN="token lifetime in seconds" VERIFY_SIGNATURE="set JWT signing algorithm" JWT_SECRET_KEY="secret key for JWT encoding"  

Примените миграции для базы данных:

alembic upgrade head

Запустите сервер:

uvicorn app.main:app

Тестирование

Для запуска тестов воспользуйтесь следующей командой:

pytest -vv app/tests/

Документация

Для тестирования API, вы можете использовать автогенерируемую документацию, которая отображает весь функционал и содержит все зарегистрированные в приложении маршруты. Документацию к API вы можете найти перейдя по ссылке:
http://127.0.0.1:8000/docs/

Лицензия

FastAPI-asyncpg-sqlalchemy распространяется по MIT License.

Контакты

Спасибо за использование FastAPI-asyncpg-sqlalchemy! Если у вас есть какие-либо вопросы или предложения, не стесняйтесь обращаться к нам.

Автор: [Alexandr Abramov https://github.com/Abramov0Alexandr]

Email: [alexandr.abramovv@gmail.com https://github.com/Abramov0Alexandr]

GitHub: [https://github.com/Abramov0Alexandr]

About

Проект представляет собой пример интеграции и взаимодействия Pydantic 2.0+SQLAlchemy_ORM+PostgreSQL+asyncpg.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published