SQL → SQLAlchemy: модели из DDL-скрипта
Ниже — не картинка и не пересказ: это настоящий вывод генератора для схемы слева. Тот же код вы получите в редакторе кнопкой «Codegen → SQLAlchemy».
Что на входеschema.sql
CREATE TABLE users (
id BIGINT NOT NULL PRIMARY KEY,
email VARCHAR(255) NOT NULL UNIQUE,
full_name VARCHAR(120),
is_active BOOLEAN NOT NULL,
created_at TIMESTAMP NOT NULL
);
CREATE TABLE orders (
id BIGINT NOT NULL PRIMARY KEY,
user_id BIGINT NOT NULL REFERENCES users(id),
total DECIMAL(12,2) NOT NULL,
note TEXT,
placed_at TIMESTAMP NOT NULL
);Что получитсяmodels.py
from datetime import datetime
from sqlalchemy import BigInteger, Boolean, DateTime, ForeignKey, Numeric, String, Text
from sqlalchemy.orm import Mapped, mapped_column, relationship
from decimal import Decimal
class Users(Base):
__tablename__ = "users"
id: Mapped[int] = mapped_column(BigInteger, primary_key=True, nullable=False)
email: Mapped[str] = mapped_column(String(255), unique=True, nullable=False)
full_name: Mapped[str | None] = mapped_column(String(120), nullable=True)
is_active: Mapped[bool] = mapped_column(Boolean, nullable=False)
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False)
class Orders(Base):
__tablename__ = "orders"
id: Mapped[int] = mapped_column(BigInteger, primary_key=True, nullable=False)
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), nullable=False)
total: Mapped[Decimal] = mapped_column(Numeric, nullable=False)
note: Mapped[str | None] = mapped_column(Text, nullable=True)
placed_at: Mapped[datetime] = mapped_column(DateTime, nullable=False)
users: Mapped["Users"] = relationship()Открыть редактор
Скрипт остаётся в браузере: и разбор, и генерация идут на вашей машине, на сервер ничего не уходит.
Как ложатся типы
| в SQL | в модели |
|---|---|
BIGINT | BigInteger |
VARCHAR(255) | String(255) |
BOOLEAN | Boolean |
TIMESTAMP | DateTime |
DECIMAL(12,2) | Numeric |
TEXT | Text |
- Необязательное поле
Mapped[str | None]- Имя колонки
full_name- Связь
ForeignKey("users.id")