diff --git a/fastapi_sqla/sqla.py b/fastapi_sqla/sqla.py index 556635d8..6b79408d 100644 --- a/fastapi_sqla/sqla.py +++ b/fastapi_sqla/sqla.py @@ -11,6 +11,7 @@ from sqlalchemy import engine_from_config, text from sqlalchemy.engine import Connection, Engine from sqlalchemy.ext.declarative import DeferredReflection +from sqlalchemy.orm import configure_mappers from sqlalchemy.orm.session import Session as SqlaSession from sqlalchemy.orm.session import sessionmaker from starlette.types import ASGIApp, Message, Receive, Scope, Send @@ -81,6 +82,11 @@ def startup(key: str = _DEFAULT_SESSION_KEY): logger.info("engine startup", engine_key=key, engine=engine_or_connection) + # Initialize all mappers, so that any errors are raised here, + # rather than during the first ORM-enabled operation. + configure_mappers() + logger.info("ORM configured") + @contextmanager def open_session(key: str = _DEFAULT_SESSION_KEY) -> Generator[SqlaSession, None, None]: