Skip to main content

Middleware for integrating Falcon applications with SQLAlchemy.

Project description

Build Status codecov.io

Falcon Middleware: SQLAlchemy Integration

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.

Installation

$ pip install falcon-sqla

Usage

The falcon_sqla session Manager can be used in two ways:

Configuration

  • 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 middleware property to the falcon.API() (to be renamed to falcon.App in Falcon 3.0+) initializer:

engine = create_engine('dialect+driver://my/database')
manager = falcon_sqla.Manager(engine)

app = falcon.API(middleware=[manager.middleware])

# The database session will be available as req.context.session

Context Manager

A 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
    # <...>

Custom Vertical Partitioning

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, 'r')

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.

About Falcon

Falcon is the minimalist web API framework for building reliable, correct, and high-performance REST APIs, microservices, proxies, and app backends in Python.

About SQLAlchemy

SQLAlchemy is the Python SQL toolkit and Object Relational Mapper that gives application developers the full power and flexibility of SQL.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

falcon-sqla-0.2.0a1.tar.gz (7.3 kB view details)

Uploaded Source

Built Distribution

falcon_sqla-0.2.0a1-py3-none-any.whl (14.1 kB view details)

Uploaded Python 3

File details

Details for the file falcon-sqla-0.2.0a1.tar.gz.

File metadata

  • Download URL: falcon-sqla-0.2.0a1.tar.gz
  • Upload date:
  • Size: 7.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/43.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.7.2

File hashes

Hashes for falcon-sqla-0.2.0a1.tar.gz
Algorithm Hash digest
SHA256 0d97fa2ff721a3209f9e04224bef97e9e4d4971cfd92c6a04a124db2546c274d
MD5 138a16245d390078d23193725e494be9
BLAKE2b-256 13a5c54901ffcade7112ba4fcfde7ab4a9402460f5bd9fb4e57bc91ae0138640

See more details on using hashes here.

File details

Details for the file falcon_sqla-0.2.0a1-py3-none-any.whl.

File metadata

  • Download URL: falcon_sqla-0.2.0a1-py3-none-any.whl
  • Upload date:
  • Size: 14.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/43.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.7.2

File hashes

Hashes for falcon_sqla-0.2.0a1-py3-none-any.whl
Algorithm Hash digest
SHA256 c1f2e0fe089471eccdac3f74f9b18f1712833519a677b583dd8c529f292670db
MD5 8d7015a5a8a4769cdad3834cd538991c
BLAKE2b-256 fe168ff815815a02c0ecf16dd2f0dea5897b30345a901ff0b6ee9a85a9601b6e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page