Install & Compatibility
Where this runs
tested against v0.2.1 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
muslpy 3.10–3.95 runs
installs and imports cleanly · install 0.0s · import 0.978s · 45.4MB
glibcpy 3.10–3.95 runs
installs and imports cleanly · install 3.5s · import 0.898s · 44MB
44MB installed
● package 44MB
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
DBSessionMiddleware
✓ from fastapi_sqlalchemy import DBSessionMiddleware
✗ from fastapi_sqlalchemy.middleware import DBSessionMiddleware
DBSessionMiddleware is exposed at package level
db
✓ from fastapi_sqlalchemy import db
✗ from fastapi_sqlalchemy.db import db
The db object is a session proxy, import directly from package
Initialize middleware, then use `db.session` for queries.
import os
from fastapi import FastAPI
from fastapi_sqlalchemy import DBSessionMiddleware, db
from sqlalchemy import create_engine
app = FastAPI()
DATABASE_URL = os.environ.get('DATABASE_URL', 'sqlite:///test.db')
app.add_middleware(DBSessionMiddleware, db_url=DATABASE_URL)
@app.get('/')
def root():
# db.session is the current SQLAlchemy session
result = db.session.execute('SELECT 1').scalar()
return {'result': result}
Errors
Common errors & fixes
RuntimeError: No database session found. Have you added the DBSessionMiddleware?
Accessing `db.session` before the middleware has been added or outside a request context.
fixEnsure `app.add_middleware(DBSessionMiddleware, db_url=...)` is called before any route that uses `db`.
AttributeError: module 'fastapi_sqlalchemy' has no attribute 'DBSessionMiddleware'
Importing from the wrong module path or outdated pip package.
fixUse `from fastapi_sqlalchemy import DBSessionMiddleware` (no submodule).
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: ...
Tables not created because the middleware does not auto-create tables.
fixUse `Base.metadata.create_all(bind=engine)` before starting the app, using the same engine URL.
Upgrade
Version history
0.2.1latest on PyPI · released Sep 25, 2020
Audit
Dependencies
fastapirequiredRequired to run FastAPI app
sqlalchemyrequiredCore ORM library
pydanticrequiredShared dependency with FastAPI