Skip to main content

No project description provided

Project description

Sqlalchemy-service

This is a library that simplifies working with database CRUD queries and connection management.

Features

  • A class to reduce the amount of code needed for database CRUD queries and connection management.

Installation

  • pip install sqlalchemy-service
  • pip install sqlalchemy-service[fastapi] for fastapi support(http exceptions and dependency injection)

Usage

  • Need environment set: POSTGRES_HOST, POSTGRES_DB, POSTGRES_PASSWORD, POSTGRES_USER
from sqlalchemy_service import BaseService, Base, init_models
from sqlalchemy.orm import Mapped
from sqlalchemy.orm import mapped_column as column
from pydantic import BaseModel
import asyncio


class User(Base):
    __tablename__ = "users"
    id: Mapped[int] = column(primary_key=True)
    name: Mapped[str]


class UserCreateSchema(BaseModel):
    name: str


class UserUpdateSchema(BaseModel):
    name: str | None = None


class UserService[Table: User, int](BaseService):
    base_table = User

    async def create(self, schema: UserCreateSchema) -> User:
        return await self._create(schema)

    async def list(self, page=None, count=None) -> list[User]:
        return await self._get_list(page=page, count=count)

    async def get(self, user_id: int) -> User:
        """Return user. If user not found, throws 404 HTTPException"""
        return await self._get_one(id=user_id)

    async def update(self, user_id: int, schema: UserUpdateSchema) -> User:
        return await self._update(user_id, schema)

    async def delete(self, user_id: int):
        await self._delete(user_id)


async def main():
    await init_models()
    async with UserService() as service:
        print(await service.create(UserCreateSchema(name="test")))


asyncio.run(main())

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

sqlalchemy_service-0.2.7.tar.gz (6.8 kB view details)

Uploaded Source

Built Distribution

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

sqlalchemy_service-0.2.7-py3-none-any.whl (9.3 kB view details)

Uploaded Python 3

File details

Details for the file sqlalchemy_service-0.2.7.tar.gz.

File metadata

  • Download URL: sqlalchemy_service-0.2.7.tar.gz
  • Upload date:
  • Size: 6.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.0.1 CPython/3.13.1 Linux/6.12.10-200.fc41.x86_64

File hashes

Hashes for sqlalchemy_service-0.2.7.tar.gz
Algorithm Hash digest
SHA256 33b3157532b5a9b4d966c3d4784392a9d589f471895c93e3e8be426dabe19c47
MD5 f64d76008a9735a4157e5c0b60353996
BLAKE2b-256 99c802c036cdafa7625d4d554a8fb1dc217eadc04569f3734896b2335ec307c8

See more details on using hashes here.

File details

Details for the file sqlalchemy_service-0.2.7-py3-none-any.whl.

File metadata

  • Download URL: sqlalchemy_service-0.2.7-py3-none-any.whl
  • Upload date:
  • Size: 9.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.0.1 CPython/3.13.1 Linux/6.12.10-200.fc41.x86_64

File hashes

Hashes for sqlalchemy_service-0.2.7-py3-none-any.whl
Algorithm Hash digest
SHA256 8e353204688fcee8d5279f797427b58ecb008be50c7c1d98a1a585315b3aff7b
MD5 ed6be78373e673f61259cdf9a209286f
BLAKE2b-256 c1e0681fdca3470dbc8fe4a5fb5c9edd9ef3716bacb7fe0c2708b44442392e66

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