SQLからSQLAlchemy変換

SQL DDL to Python SQLAlchemy 2.0 Model Generator

SQL の CREATE TABLE 文を、最新の Mapped および mapped_column 型注釈を備えた堅牢な Python SQLAlchemy 2.0 DeclarativeBase モデルへ即座に変換します。

プリセット:
Dialect:
Typing:
入力postgres
"""
SQLAlchemy 2.0 DeclarativeBase Models
Generated by ToolsAA SQL to SQLAlchemy Generator
Dialect: POSTGRES | Generated Tables: 6
"""

from typing import Any, List, Optional
import uuid
import enum

from sqlalchemy import (
    BigInteger,
    Boolean,
    Date,
    DateTime,
    Float,
    ForeignKey,
    Index,
    Integer,
    Numeric,
    SmallInteger,
    String,
    Text,
    Time,
    UniqueConstraint,
    func,
    text,
)
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, relationship


class Base(DeclarativeBase):
    pass


class UserRole(str, enum.Enum):
    CUSTOMER = "CUSTOMER"
    ADMIN = "ADMIN"
    VENDOR = "VENDOR"


class OrderStatus(str, enum.Enum):
    PENDING = "PENDING"
    PAID = "PAID"
    PROCESSING = "PROCESSING"
    SHIPPED = "SHIPPED"
    DELIVERED = "DELIVERED"
    CANCELLED = "CANCELLED"


class User(Base):
    __tablename__ = "users"

    id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), primary_key=True, default="gen_random_uuid(")

    def __repr__(self) -> str:
        return f"<User(id={self.id!r})>"


class UserProfile(Base):
    __tablename__ = "user_profiles"

    id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), primary_key=True, default="gen_random_uuid(")

    def __repr__(self) -> str:
        return f"<UserProfile(id={self.id!r})>"


class Product(Base):
    __tablename__ = "products"

    id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True)
    sku: Mapped[Optional[str]] = mapped_column(nullable=True)

    def __repr__(self) -> str:
        return f"<Product(id={self.id!r}, sku={self.sku!r})>"


class Order(Base):
    __tablename__ = "orders"

    __table_args__ = (
        Index("idx_orders_customer", "customer_id"),
    )

    id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), primary_key=True, default="gen_random_uuid(")

    # Relationships
    order_items: Mapped[List["OrderItem"]] = relationship(back_populates="order", cascade="all, delete-orphan")

    def __repr__(self) -> str:
        return f"<Order(id={self.id!r})>"


class OrderItem(Base):
    __tablename__ = "order_items"

    __table_args__ = (
        Index("idx_order_items_order", "order_id"),
    )

    id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=True)
    order_id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), ForeignKey("orders.id"), nullable=False)

    # Relationships
    order: Mapped["Order"] = relationship(back_populates="order_items")

    def __repr__(self) -> str:
        return f"<OrderItem(id={self.id!r}, order_id={self.order_id!r})>"


class AuditLog(Base):
    __tablename__ = "audit_logs"

    id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=True)
    action: Mapped[Optional[str]] = mapped_column(nullable=True)

    def __repr__(self) -> str:
        return f"<AuditLog(id={self.id!r}, action={self.action!r})>"
解析されたテーブル数6DeclarativeBase model entities
Mapped Attributes9フィールド定義
外部キー (Foreign Key)postgres
1外部キー (Foreign Key)

ゼロナレッジ・完全ローカル実行

すべてのデータ処理、解析、コード生成はお使いのブラウザ内部メモリで完結します。外部サーバーへの送信はゼロです。

超高速・即時リアクティブ演算

最適化されたクライアント側解析パイプラインにより、キーストロークと同時に遅延なくリアルタイムで結果を生成します。

公式仕様準拠・高信頼アーキテクチャ

IETF RFCや公式業界仕様に厳格に準拠し、エッジケースの安全な処理とメモリリークのない堅牢な実行を保証します。

技術リファレンス&アーキテクチャガイド

SQL DDL から Python SQLAlchemy 2.0 モデル生成ツール — リファレンスガイド

SQL の CREATE TABLE 文を、最新の Mapped および mapped_column 型注釈を備えた堅牢な Python SQLAlchemy 2.0 DeclarativeBase モデルへ即座に変換します。

主要パラメータ&設定項目

SQL方言 (Dialect)Enum (postgresql | mysql | sqlite | mssql | oracle)

SERIAL、ENUM、JSONB、UUID などのエンジン固有型を正確にパースするためのターゲット SQL 方言。

初期値: postgresql
注釈構文スタイルEnum (mapped_column | legacy_column)

最新の SQLAlchemy 2.0 Mapped[T] 型注釈、または 1.4 互換の Column() 構文を選択します。

初期値: mapped_column
Nullable 型ヒント形式Enum (union_pipe | optional)

NULL 許容カラムの Python 型ヒント形式。Python 3.10+ パイプ記法 (Mapped[str | None]) または typing.Optional (Mapped[Optional[str]])。

初期値: union_pipe
リレーションシップ自動生成Boolean (true | false)

外部キー (FOREIGN KEY) 制約を自動解析し、双方向の relationship() ORM プロパティを構築します。

初期値: true
ベースクラス識別子String

SQLAlchemy 2.0 の DeclarativeBase を継承する親宣言型ベースクラスの名称。

初期値: Base

プロの活用テクニック&推奨設定

SQLAlchemy 2.0 の Mapped 型ヒントの活用

最新の Mapped[int] と mapped_column() を採用することで、プラグインを追加することなく Mypy や Pyright、VS Code などの IDE で完全な静的型検査が機能します。

外部キーと back_populates の自動補完

FOREIGN KEY 参照を含むテーブルを解析すると、子側の ForeignKey カラムと親側の back_populates 付き relationship が自動構築されます。

PostgreSQL 固有型 (JSONB・UUID) のネイティブ対応

PostgreSQL の JSONB、ARRAY、UUID は汎用型ではなく sqlalchemy.dialects.postgresql の専用モジュール型へ高精度にマッピングされます。

Alembic マイグレーションと FastAPI の即時連携

生成コードには Base.metadata が含まれており、Alembic の自動マイグレーション検出や Pydantic v2 の from_attributes モードとそのまま統合可能です。

よくあるトラブルと解決策

トリガーや独自ストアド構文によるパースエラー

ベンダー固有のトリガー定義やプロシージャ、独自 ALTER TABLE 文を除去し、標準的な CREATE TABLE DDL 文のみを入力してください。

複合主キー (Composite Primary Key) の認識失敗

末尾の PRIMARY KEY (col1, col2) 構文を維持してください。パーサーが対象となるすべての mapped_column に primary_key=True を正しく付与します。

モデル間の循環参照による Python 実行時エラー

relationship('TargetModel') のように参照先クラス名を文字列で指定することで、Python の前方参照解決が正常に動作します。

よくある質問 (FAQ)

このツールは SQLAlchemy 2.0 構文に対応していますか?▼

はい。レガシーな 1.x の Column() ではなく、SQLAlchemy 2.0 推奨の DeclarativeBase、Mapped[T]、mapped_column() 構文を出力します。

NULL 許容カラムやデフォルト値はどのように変換されますか?▼

NOT NULL がないカラムは Mapped[T | None] (nullable=True) となり、SQL の DEFAULT 値は server_default または default 引数へ変換されます。

入力した SQL スキーマが外部サーバーに送信されることはありますか?▼

いいえ。SQL の字句解析、構文木解析、Python コード生成はすべてブラウザ内で 100% クライアントサイド実行され、サーバーへのデータ送信は一切ありません。

複数の CREATE TABLE 文を一度に一括変換できますか?▼

はい。複数のテーブルを含む DDL スキーマ全体を貼り付けると、外部キー依存関係を自動考慮して適切な順序でモデルクラスが出力されます。

データベースの ENUM 型はどのように扱われますか?▼

DDL 内の ENUM 型は、Python 標準の enum.Enum クラスとして自動定義され、SQLAlchemy の Enum カラム定義と連携して出力されます。

関連するおすすめ開発ツール

すべてのツール →
SQL DDLからGolang GORM構造体モデル生成ツール開発ツール

SQLのCREATE TABLEスキーマからGORMタグ、JSONタグ、適切なGo型マッピングを備えたGolang構造体(struct)モデルを瞬時に自動生成します。

ツールを開く→
SQL DDLからSequelize TypeScriptモデルへの変換ジェネレーター開発ツール

SQLのCREATE TABLE文からSequelizeのTypeScriptモデル、DataTypes定義、CreationOptional属性、およびModel.init初期化コードを生成するための包括的開発者リファレンス。

ツールを開く→
Json To Elixir Ecto開発ツール

生のJSONデータからElixir Ectoスキーマ、マイグレーション、Changeset、Dialyzer型仕様(typespec)を自動生成するためのアーキテクチャ設計仕様書。

ツールを開く→
JSON to Scala 3 & Scala 2 Case Class 変換ツール開発ツール

JSONペイロードを高精度に解析し、型安全なScala 3およびScala 2のケースクラスへ変換。Circe、Play JSON、zio-jsonコーデックの自動導出に対応。

ツールを開く→
JSON to PHP 8.2+ 型付き Readonly DTO ジェネレーター開発ツール

JSON データをコンストラクタプロモーションと fromArray デシリアライザを備えた最新の PHP 8.2+ readonly class DTO(データ転送オブジェクト)に変換します。

ツールを開く→
TypeScript to GraphQL SDL開発ツール

TypeScriptのインターフェース、型エイリアス、列挙型を本番環境向けGraphQLスキーマ定義言語(SDL)へ変換するための開発者リファレンス。

ツールを開く→