SQLAlchemy announced yesterday that version 0.3.0 was available. I’ve been hearing about and reading references to SQLAlchemy for a while now. I just downloaded and installed SQLAlchemy and have been thumbing through the documentation. It appears to have all the power of, say, SQLObject or Django’s ORM with even greater customization functionality.
From the SQLAlchemy front page:
SQLAlchemy is the Python SQL toolkit and Object Relational Mapper that gives application developers the full power and flexibility of SQL.
It 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.
SQL databases behave less and less like object collections the more size and performance start to matter; object collections behave less and less like tables and rows the more abstraction starts to matter. SQLAlchemy aims to accommodate both of these principles.
SQLAlchemy doesn’t view databases as just collections of tables; it sees them as relational algebra engines. Its object relational mapper enables classes to be mapped against the database in more than one way. SQL constructs don’t just select from just tables–you can also select from joins, subqueries, and unions. Thus database relationships and domain object models can be cleanly decoupled from the beginning, allowing both sides to develop to their full potential.
This will be an interesting project to watch if for no other reason than the projects which are working to integrate with it (such as TurboGears and Django).