Smithery Logo
MCPsSkillsDocsPricing
Login
NewFlame, an assistant that learns and improves. Available onTelegramSlack
    nimranaz148

    sqlmodel

    nimranaz148/sqlmodel
    Coding
    1 installs

    About

    SKILL.md

    Install

    • Telegram
      Telegram
    • Slack
      Slack
    • Claude Code
      Claude Code
    • Codex
      Codex
    • OpenClaw
      OpenClaw
    • Cursor
      Cursor
    • Amp
      Amp
    • GitHub Copilot
      GitHub Copilot
    • Gemini CLI
      Gemini CLI
    • Kilo Code
      Kilo Code
    • Junie
      Junie
    • Replit
      Replit
    • Windsurf
      Windsurf
    • Cline
      Cline
    • Continue
      Continue
    • OpenCode
      OpenCode
    • OpenHands
      OpenHands
    • Roo Code
      Roo Code
    • Augment
      Augment
    • Goose
      Goose
    • Trae
      Trae
    • Zencoder
      Zencoder
    • Antigravity
      Antigravity
    • Download skill
    ├─
    ├─
    └─
    Smithery Logo

    Give agents more agency

    Resources

    DocumentationPrivacy PolicySystem Status

    Company

    PricingAboutBlog

    Connect

    © 2026 Smithery. All rights reserved.

    About

    SQLModel ORM patterns for PostgreSQL database operations. Use when defining database models, creating queries, or managing database connections for the Todo backend.

    SKILL.md

    SQLModel Skill

    Quick Reference

    SQLModel is a Python ORM built on top of SQLAlchemy and Pydantic for type-safe database operations.

    Basic Model Definition

    from sqlmodel import SQLModel, Field, Relationship
    from datetime import datetime
    from typing import Optional
    
    class Task(SQLModel, table=True):
        """Task model for todo items."""
        id: int | None = Field(default=None, primary_key=True)
        user_id: str = Field(foreign_key="users.id", index=True)
        title: str = Field(min_length=1, max_length=200)
        description: str | None = Field(default=None, max_length=1000)
        completed: bool = Field(default=False)
        created_at: datetime = Field(default_factory=datetime.utcnow)
        updated_at: datetime = Field(default_factory=datetime.utcnow)
    

    Database Connection

    from sqlmodel import create_engine, Session
    
    DATABASE_URL = os.getenv(
        "DATABASE_URL",
        "postgresql://user:pass@host.neon.tech/db?sslmode=require"
    )
    
    engine = create_engine(
        DATABASE_URL,
        echo=True,
        pool_pre_ping=True,
    )
    
    def get_session() -> Session:
        with Session(engine) as session:
            try:
                yield session
            finally:
                session.close()
    

    CRUD Operations

    from sqlmodel import Session, select
    
    def create_task(db: Session, title: str, user_id: str) -> Task:
        task = Task(title=title, user_id=user_id)
        db.add(task)
        db.commit()
        db.refresh(task)
        return task
    
    def get_user_tasks(db: Session, user_id: str) -> list[Task]:
        query = select(Task).where(Task.user_id == user_id)
        return list(db.exec(query))
    
    def get_task(db: Session, task_id: int, user_id: str) -> Task | None:
        query = select(Task).where(
            Task.id == task_id,
            Task.user_id == user_id
        )
        return db.exec(query).first()
    
    def update_task(db: Session, task_id: int, user_id: str, **kwargs) -> Task | None:
        task = get_task(db, task_id, user_id)
        if task:
            for key, value in kwargs.items():
                setattr(task, key, value)
            db.commit()
            db.refresh(task)
        return task
    
    def delete_task(db: Session, task_id: int, user_id: str) -> bool:
        task = get_task(db, task_id, user_id)
        if task:
            db.delete(task)
            db.commit()
            return True
        return False
    

    Pydantic Integration

    from pydantic import BaseModel, Field
    
    class TaskCreate(BaseModel):
        """Schema for creating a task."""
        title: str = Field(..., min_length=1, max_length=200)
        description: str | None = Field(None, max_length=1000)
    
        class Config:
            from_attributes = True
    
    class TaskResponse(TaskCreate):
        """Schema for task responses."""
        id: int
        user_id: str
        completed: bool
        created_at: datetime
        updated_at: datetime
    
        class Config:
            from_attributes = True
    

    Indexes

    class Task(SQLModel, table=True):
        user_id: str = Field(foreign_key="users.id", index=True)
        completed: bool = Field(default=False, index=True)
        created_at: datetime = Field(default_factory=datetime.utcnow, index=True)
    

    For Detailed Reference

    See REFERENCE.md for:

    • Advanced relationships
    • Complex queries
    • Migrations
    • Performance optimization
    • Testing patterns
    Recommended Servers
    ThinAir Data
    ThinAir Data
    Supabase
    Supabase
    PlanetScale
    PlanetScale
    Repository
    nimranaz148/spec-driven-todo-app-2
    Files