Database Configuration

Database connection and session management.

Overview

This module provides database configuration and session management:

Key Components

Database URL

Configurable database connection string supporting:

  • PostgreSQL (production)

  • SQLite (development/testing)

  • Connection pooling configuration

SessionLocal

SQLAlchemy session factory:

from ai4drpm.db.database import SessionLocal

db = SessionLocal()
try:
    # Database operations
    pass
finally:
    db.close()

get_db Dependency

FastAPI dependency for database sessions:

from ai4drpm.db.database import get_db
from fastapi import Depends

@app.get("/resources")
def get_resources(db: Session = Depends(get_db)):
    # db session automatically managed
    pass

Engine Configuration

SQLAlchemy engine with:

  • Connection pooling (pool_size, max_overflow)

  • Connection timeout settings

  • Echo mode for SQL logging (development)

  • Pool pre-ping for connection health checks

Features

  • Connection Pooling: Efficient connection reuse

  • Automatic Session Management: Context managers for proper cleanup

  • Transaction Support: Commit/rollback handling

  • Health Checks: Connection validation

  • Migration Support: Alembic integration

Usage Example

from ai4drpm.db.database import SessionLocal, engine, Base

# Create all tables
Base.metadata.create_all(bind=engine)

# Use session
db = SessionLocal()
try:
    # Perform operations
    result = db.query(User).all()
    db.commit()
except Exception:
    db.rollback()
    raise
finally:
    db.close()

# Or use as context manager
with SessionLocal() as db:
    result = db.query(User).all()