Repositories¶
Advanced Alchemy’s repository pattern provides a clean, consistent interface for database operations with type-safe CRUD operations and filtering capabilities.
Learning Path¶
Prerequisites¶
Understanding of Basics
Python 3.9+
SQLAlchemy 2.0+
Overview¶
A repository acts as a collection-like interface to your database models, providing:
Type-safe CRUD operations
Filtering and pagination
Bulk operations
Transaction management
Specialized repository types for common patterns
Repository Types¶
Advanced Alchemy provides async and sync repository implementations:
Repository Class |
Features |
|---|---|
|
- Async session support
- Basic CRUD operations
- Filtering and pagination
- Bulk operations
|
|
- Async session support
- All base repository features
- Slug-based lookups
- URL-friendly operations
|
|
- Async session support
- Custom query execution
- Complex aggregations
- Raw SQL support
|
|
- Sync session support
- Basic CRUD operations
- Filtering and pagination
- Bulk operations
|
|
- Sync session support
- All base repository features
- Slug-based lookups
- URL-friendly operations
|
|
- Sync session support
- Custom query execution
- Complex aggregations
- Raw SQL support
|
Quick Start¶
Creating a basic repository:
from advanced_alchemy.repository import SQLAlchemyAsyncRepository
from sqlalchemy.ext.asyncio import AsyncSession
class PostRepository(SQLAlchemyAsyncRepository[Post]):
"""Repository for managing blog posts."""
model_type = Post
async def create_post(db_session: AsyncSession, title: str, content: str) -> Post:
repository = PostRepository(session=db_session)
return await repository.add(
Post(title=title, content=content), auto_commit=True
)