SQLAlchemy is an SQL database abstraction library for Python. Its strengths are:
* full power and flexibility of SQL. SQLAlchemy provides a full suite
of well known enterprise-level persistence patterns, designed for
efficient and high-performing database access, adapted into a simple
and Pythonic domain language.
* extremely easy to use for all the basic tasks, such as: accessing pooled
connections, constructing SQL from Python expressions, finding object
instances, and committing object modifications back to the database.
* powerful enough for complicated tasks, such as: eager load a graph of
objects and their dependencies via joins; map recursive adjacency
structures automatically; map objects to not just tables but to any
arbitrary join or select statement; combine multiple tables together to
load whole sets of otherwise unrelated objects from a single result set;
commit entire graphs of object changes in one step.
* built to conform to what DBAs demand, including the ability to swap out
generated SQL with hand-optimized statements, full usage of bind parameters
for all literal values, fully transactionalized and consistent updates
using Unit of Work.
* modular. Different parts of SQLAlchemy can be used independently of the
rest, including the connection pool, SQL construction, and ORM. SQLAlchemy
is constructed in an open style that allows plenty of customization, with
an architecture that supports custom datatypes, custom SQL extensions, and
ORM plugins which can augment or extend mapping functionality.