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