SQLAlchemy

2.0.48 · active · verified Tue Mar 24

The most widely used Python SQL toolkit and ORM. v2.0 released January 2023 — massive breaking change from v1.x. The entire ORM query API shifted from session.query() to select(). engine.execute() removed. Passing raw strings to execute() removed. Typed mapped_column() replaces Column(). Current version: 2.0.48 (Mar 2026). Flask-SQLAlchemy's Model.query pattern is also legacy in v2.

Warnings

Install

Imports

Quickstart

SQLAlchemy 2.0 ORM quickstart with typed models.

# pip install sqlalchemy
from sqlalchemy import create_engine, String, select, text
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, Session

class Base(DeclarativeBase):
    pass

class User(Base):
    __tablename__ = 'users'
    id: Mapped[int] = mapped_column(primary_key=True)
    name: Mapped[str] = mapped_column(String(50))

engine = create_engine('sqlite:///test.db')
Base.metadata.create_all(engine)

with Session(engine) as session:
    # Insert
    session.add(User(name='Alice'))
    session.commit()

    # Query — v2 style
    stmt = select(User).where(User.name == 'Alice')
    user = session.scalars(stmt).first()
    print(user.name)  # 'Alice'

view raw JSON →