Flask-SQLAlchemy is an extension for Flask that adds support for SQLAlchemy to your application. It aims to simplify using SQLAlchemy with Flask by providing useful defaults and extra helpers that make it easier to accomplish common tasks.
Install and update using pip:
$ pip install -U Flask-SQLAlchemy
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///example.sqlite"
class Base(DeclarativeBase):
pass
db = SQLAlchemy(app, model_class=Base)
class User(db.Model):
id: Mapped[int] = mapped_column(db.Integer, primary_key=True)
username: Mapped[str] = mapped_column(db.String, unique=True, nullable=False)
with app.app_context():
db.create_all()
db.session.add(User(username="example"))
db.session.commit()
users = db.session.execute(db.select(User)).scalars()
For guidance on setting up a development environment and how to make a contribution to Flask-SQLAlchemy, see the contributing guidelines.
The Pallets organization develops and supports Flask-SQLAlchemy and other popular packages. In order to grow the community of contributors and users, and allow the maintainers to devote more time to the projects, please donate today.
- Documentation: https://flask-sqlalchemy.palletsprojects.com/
- Changes: https://flask-sqlalchemy.palletsprojects.com/changes/
- PyPI Releases: https://pypi.org/project/Flask-SQLAlchemy/
- Source Code: https://github.com/pallets-eco/flask-sqlalchemy/
- Issue Tracker: https://github.com/pallets-eco/flask-sqlalchemy/issues/
- Website: https://palletsprojects.com/
- Twitter: https://twitter.com/PalletsTeam
- Chat: https://discord.gg/pallets