The falcon-sqla package provides a middleware component for managing
SQLAlchemy sessions.
The manager component can also serve as a base building block or a recipe for
more complex use cases, such as applications leveraging multiple database
binds.
$ pip install falcon-sqlaThe falcon_sqla session Manager can be used in two ways:
- As a Falcon middleware component.
- As a context manager to explicitly provide a database session.
- Create a SQLAlchemy engine.
- Pass the engine to the
Manager()initializer as its first parameter. - If using the manager as a middleware component, pass its
middlewareproperty to a falcon.App's middleware list:
engine = create_engine('dialect+driver://my/database')
manager = falcon_sqla.Manager(engine)
app = falcon.App(middleware=[manager.middleware])
# The database session will be available as req.context.sessionA falcon_sqla.Manager can also explicitly provide a database session using
the session_scope() context manager:
# Somewhere inside a responder
with self.manager.session_scope(req, resp) as session:
# Use the session
# <...>session_scope() can also be used as a standalone session context outside of
the request-response cycle:
with self.manager.session_scope() as session:
# Use the session
# <...>Simple random selection of read- and write- database replicas is supported
out of the box. Use the add_engine() method to instruct the Manager to
include the provided engines in the runtime bind selection logic:
manager = falcon_sqla.Manager(engine)
read_replica = create_engine('dialect+driver://my/database.replica')
manager.add_engine(read_replica, falcon_sqla.EngineRole.READ)The Manager.get_bind() method can be overridden to implement custom engine
selection logic for more complex use cases.
See also this SQLAlchemy recipe: Custom Vertical Partitioning.
Falcon is the minimalist REST API and microservices framework for Python developers, with a focus on reliability, correctness, and performance at scale.
SQLAlchemy is the Python SQL toolkit and Object Relational Mapper that gives application developers the full power and flexibility of SQL.