SQLModel vs SQLAlchemy 2.0 — 2026-06-30
SQLModel current state
- Latest release: 0.0.38 (April 2, 2025) — https://github.com/tiangolo/sqlmodel/releases
- Repo переехал на
fastapi/sqlmodel(былtiangolo/sqlmodel) - Recent cadence: 0.0.35 (Feb 20, 2025) → 0.0.36 → 0.0.37 → 0.0.38 (Apr 2, 2025)
- NO 2026 release найден за весь H1 2026 — gap >14 months
- NOT reached 1.0 — всё ещё в 0.0.x range
Известные limitations
- Pinned/outdated SQLAlchemy dependency — historically prevents independent SQLAlchemy upgrades
- UUID support и Enum handling требуют workarounds
- Async sessions / lazy loading на relationships — long-standing pain point
- Many-to-many и parent.child access в async требует careful handling или third-party extensions (
async-sqlmodelс AwaitableField)
- Many-to-many и parent.child access в async требует careful handling или third-party extensions (
- AsyncEngine import paths менялись между versions, ломая старые examples
- Splitting models across multiple files может trigger
PydanticUserError - Community consensus: SQLModel не заменяет SQLAlchemy session logic — для advanced features drop down to raw SQLAlchemy
Production readiness sentiment
- Maintenance: minimal-but-alive
- Регулярные но infrequent dot releases
- Slow PR review velocity — recurring complaint с 2022
- NOT FOUND 2026 thread прямо declaring SQLModel production-ready or unsuitable
Recommendation
Оставляем SQLAlchemy 2.0:
- Дублирование Pydantic-моделей и SQLAlchemy-моделей — небольшая боль, но намного меньше чем потенциальные surprises с SQLModel 0.0.x cadence и pinned SQLAlchemy
- В нашем
models.pyвсего 3 модели (Item, Digest, CostLedger) — это не велик объём дублирования
Когда пересмотреть: если SQLModel выпустит 1.0 с подтверждённой стабильностью + recent release activity. Сейчас (14+ месяцев без release) — wait-and-see.
Metadata
- title
- SQLModel vs SQLAlchemy 2.0 на 2026-06-30
- tags
- ['research', 'sqlalchemy', 'sqlmodel', 'db']
- created
- 2026-06-30
- sources_fetched
- 2026-06-30