SQL DDL to Python Models

Generate Pydantic, SQLAlchemy, SQLModel, Dataclasses and more from your database schema in seconds

* Web UI version may differ from the latest release

See It In Action

Paste your SQL, get Python models instantly

SQL DDL
CREATE TABLE "users" (
  "id" SERIAL PRIMARY KEY,
  "email" VARCHAR(255) NOT NULL,
  "name" VARCHAR(100),
  "is_active" BOOLEAN DEFAULT TRUE,
  "created_at" TIMESTAMP DEFAULT NOW()
);
omymodels
Python Model
from datetime import datetime
from typing import Optional
from pydantic import BaseModel


class Users(BaseModel):
    id: int
    email: str
    name: Optional[str]
    is_active: Optional[bool] = True
    created_at: Optional[datetime] = datetime.now()
from __future__ import annotations
import datetime
from pydantic import BaseModel


class Users(BaseModel):
    id: int
    email: str
    name: str | None = None
    is_active: bool | None = True
    created_at: datetime.datetime | None = datetime.datetime.now()
import sqlalchemy as sa
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.sql import func

Base = declarative_base()


class Users(Base):
    __tablename__ = 'users'

    id = sa.Column(sa.Integer(), primary_key=True)
    email = sa.Column(sa.String(255), nullable=False)
    name = sa.Column(sa.String(100))
    is_active = sa.Column(sa.Boolean(), server_default='true')
    created_at = sa.Column(sa.TIMESTAMP(), server_default=func.now())
import datetime
from typing import Optional
from sqlmodel import Field, SQLModel
from sqlalchemy.sql import func


class Users(SQLModel, table=True):
    __tablename__ = 'users'

    id: Optional[int] = Field(default=None, primary_key=True)
    email: str
    name: Optional[str]
    is_active: Optional[bool] = Field(server_default='true')
    created_at: Optional[datetime.datetime] = Field(server_default=func.now())
import datetime
from dataclasses import dataclass, field


@dataclass
class Users:
    id: int
    email: str
    name: str = None
    is_active: bool = True
    created_at: datetime.datetime = field(
        default_factory=datetime.datetime.now
    )

Supported Output Formats

One DDL, many possibilities

๐Ÿ”ท

Pydantic v1

pydantic
๐Ÿ”ถ

Pydantic v2

pydantic_v2
๐Ÿ—„๏ธ

SQLAlchemy ORM

sqlalchemy
โšก

SQLModel

sqlmodel
๐Ÿ“ฆ

Dataclasses

dataclass
๐Ÿฆ„

GinoORM

gino
๐Ÿ“‹

OpenAPI 3

openapi3
๐Ÿ”ง

SQLAlchemy Core

sqlalchemy_core

Quick Start

Get started in 3 simple steps

1

Install

Install via pip in seconds

pip install omymodels
2

Use in Python

Import and generate models

from omymodels import create_models

result = create_models(
    ddl,
    models_type="pydantic_v2"
)
print(result["code"])
3

Or Use CLI

Generate directly from terminal

# Generate Pydantic v2 models
omm schema.sql -m pydantic_v2 -t models.py

# Generate SQLModel
omm schema.sql -m sqlmodel -t models.py

Features

Everything you need for model generation

๐Ÿ”„

Bidirectional Conversion

Convert between different model types. Turn Pydantic into SQLAlchemy or vice versa.

๐Ÿ“

Enum Support

Automatically generates Python Enums from SQL ENUM and TYPE definitions.

๐Ÿ”—

Foreign Keys

Preserves relationships with proper foreign key references and constraints.

โš™๏ธ

Defaults & Constraints

Handles default values, nullable fields, and other column constraints.

๐Ÿ”Œ

Plugin System

Create custom generators for your own frameworks without forking.

๐ŸŒ

OpenAPI Support

Generate OpenAPI 3 schemas or convert them to Python models.