FREE TOOL

SQL to SQLAlchemy models converter

Paste your CREATE TABLE statements and get SQLAlchemy declarative model classes — columns, primary keys, foreign keys, and relationship() attributes.

YOUR SQL
PYTHON OUTPUT
# Generated by ERD Factory - review relation/field names before use.

from sqlalchemy import Column, Boolean, DateTime, Integer, String, ForeignKey
from sqlalchemy.orm import declarative_base, relationship

Base = declarative_base()

class Users(Base):
    __tablename__ = "users"

    id = Column(Integer, primary_key=True, autoincrement=True)
    email = Column(String, nullable=False)
    full_name = Column(String)
    created_at = Column(DateTime)
    last_login_at = Column(DateTime)

class Orders(Base):
    __tablename__ = "orders"

    id = Column(Integer, primary_key=True, autoincrement=True)
    user_id = Column(Integer, ForeignKey("users.id"))
    status = Column(String, nullable=False)
    total_cents = Column(Integer, nullable=False)
    currency = Column(String)
    placed_at = Column(DateTime)
    shipped_at = Column(DateTime)
    user = relationship("Users")

class OrderItems(Base):
    __tablename__ = "order_items"

    id = Column(Integer, primary_key=True, autoincrement=True)
    order_id = Column(Integer, ForeignKey("orders.id"), unique=True)
    product_id = Column(Integer, nullable=False)
    quantity = Column(Integer, nullable=False)
    order = relationship("Orders")

class Products(Base):
    __tablename__ = "products"

    id = Column(Integer, primary_key=True, autoincrement=True)
    sku = Column(String, nullable=False)
    name = Column(String, nullable=False)
    price_cents = Column(Integer, nullable=False)
    inventory_count = Column(Integer)
    active = Column(Boolean)

class Payments(Base):
    __tablename__ = "payments"

    id = Column(Integer, primary_key=True, autoincrement=True)
    order_id = Column(Integer, ForeignKey("orders.id"), unique=True)
    amount_cents = Column(Integer, nullable=False)
    method = Column(String, nullable=False)
    processed_at = Column(DateTime)
    order = relationship("Orders")

class Sessions(Base):
    __tablename__ = "sessions"

    id = Column(Integer, primary_key=True, autoincrement=True)
    token = Column(String, nullable=False)
    expires_at = Column(DateTime)

See these 6 tables as an interactive diagram, get AI-suggested fixes, and save your schema — free.

Open in the full editor

Find the gaps before
production does.

Paste a schema and see your first analysis in under ten seconds.

ERD Factory

Schema visualization & analysis for people who ship databases.

© 2026 ERD Factory