Vue d'ensemble
Flask-SQLAlchemy 3.0, publié le 6 janvier 2023, ajoute le support de SQLAlchemy 2.0 et réécrit la gestion des sessions.
Fonctionnalités principales
Support de SQLAlchemy 2.0
L'extension supporte le nouveau style déclaratif de SQLAlchemy 2.0 avec mapped_column() et DeclarativeBase, tout en restant compatible avec l'ancien style.
python
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
pass
db = SQLAlchemy(model_class=Base)
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
db.init_app(app)
class Article(db.Model):
id: Mapped[int] = mapped_column(primary_key=True)
titre: Mapped[str] = mapped_column(db.String(200))
Réécriture des sessions
La gestion des sessions a été entièrement réécrite pour mieux s'intégrer au cycle de vie des requêtes Flask. La session est automatiquement fermée à la fin de chaque requête.
python
from flask import Flask
@app.route('/articles')
def liste_articles():
# La session est gérée automatiquement
articles = db.session.execute(
db.select(Article).order_by(Article.titre)
).scalars().all()
return [{'id': a.id, 'titre': a.titre} for a in articles]
# db.session est fermée à la fin de la requête
# Pas besoin de db.session.remove() explicite
