Skip to main content

ORM Core Library for FastAPI and SQLAlchemy

Project description

ORM Manager Factory

PyPI Version License

Универсальная фабрика для создания менеджеров работы с SQLAlchemy ORM, поддерживающая:

  • Базовые CRUD-операции
  • Автоматическую валидацию через Pydantic схемы
  • Генерацию FastAPI роутеров

📦 Установка

pip install orm_core

🚀 Возможности

1. Базовый ORM менеджер

Работа с моделями SQLAlchemy без дополнительных схем.

2. Менеджер с Pydantic схемами

Автоматическая валидация входных/выходных данных.

3. Менеджер с автогенерацией FastAPI роутеров

Полноценное CRUD API из коробки

🔧 Использование

1. Базовый ORM менеджер

from orm_manager import ClientDB, create_orm_manager

class YourClientDB(ClientDB):
    def __init__(self, async_url: str):
        super().__init__(async_url)
        self.user = create_orm_manager(User)

db = YourClientDB("postgresql+asyncpg://user:pass@localhost:5432/db")

# Использование
await db.init()

await db.user.add(...)
await db.user.get_by(...)
await db.user.get_by_query(...)
await db.user.get_all(...)
await db.user.delete(...)

2. С Pydantic схемами

class YourClientDB(ClientDB):
    def __init__(self, async_url: str):
        super().__init__(async_url)
        self.user = create_orm_manager(
            User,
            UserCreateSchema,
            UserUpdateSchema,
            UserOutSchema
        )

# Автоматическая валидация входных/выходных данных в Pydantic схемы
await db.init()

await db.user.add(...)
...
await db.user.delete(...)

3. С генерацией FastAPI роутеров

class YourClientDB(ClientDB):
    def __init__(self, async_url: str):
        super().__init__(async_url)

        # Автоматическая генерация Pydantic схем для swagger
        self.group = create_orm_manager(
            Group, 
            session_factory=self.session_factory,
            api=True
        )

        # Можно использовать кастомные схемы
        self.user = create_orm_manager(
            User,
            UserCreateSchema,
            UserUpdateSchema,
            UserOutSchema,
            session_factory=self.session_factory,
            api=True,
            tags=["Users"]
        )
        

@asynccontextmanager
async def lifespan(app: FastAPI):
    await db_client.init_db()
    yield

app = FastAPI(
    lifespan=lifespan,
)
app.include_router(db.user.router)
app.include_router(db.group.router)

📄 Лицензия

MIT License. См. файл LICENSE.

🤝 Вклад

Приветствуются pull requests и issue reports.

🧑‍💻 Об авторе

Соловьёв Эрик - GitHub

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

orm_core-0.0.3.tar.gz (18.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

orm_core-0.0.3-py3-none-any.whl (29.8 kB view details)

Uploaded Python 3

File details

Details for the file orm_core-0.0.3.tar.gz.

File metadata

  • Download URL: orm_core-0.0.3.tar.gz
  • Upload date:
  • Size: 18.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for orm_core-0.0.3.tar.gz
Algorithm Hash digest
SHA256 0c70c4a1974c4c8f5dfb132f8b5d6ffaafb741bcb7d4ee218332eae4ad8a259d
MD5 82e47a642a2905453f8fe9bd6b29ba7c
BLAKE2b-256 86d148f9a96044e9a02124730e6bd8b5c04b8e4b753977bae5a24e956fd5f734

See more details on using hashes here.

File details

Details for the file orm_core-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: orm_core-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 29.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for orm_core-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 6fbc6eb86dfb3fef902b06a7a44433544dad3aa7391afafb53ecc7d36db65314
MD5 7291a0ee4848530d1e9e8195592f975a
BLAKE2b-256 fb0bbd3c265ad487b4d8d96b9e1df7435482288fed46d2e3b6c43046cf0205cd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page