Django 1.1 is out
docs.djangoproject.com
docs.djangoproject.com
SQLAlchemy puts emphasis on the "SQL". It wants to expose every capability of your database and every feature of its SQL dialect, and is heavily oriented around thinking in SQL first and then working your way back to live objects in code.
Django puts emphasis on the "object" side of object-relational mapping; it doesn't aim to be a comprehensive API to your database (since you can just write SQL for that), and moves practically all of the design and interaction up into the Python code layer, then working your way down to the DB as needed.
Or, more succinctly:
* SQLAlchemy: "I have a database and want to interact with it through Python objects".
* Django: "I have Python objects, and would like to use a database as a store for them."
Neither one is objectively the "right" or "wrong" way to approach this, IMHO.
SQLAlchemy is way more powerful and flexible. Scan the SQLAlchemy documentation for examples. Particularly storing nested structures and support for inheritance (which is broken in Django).
SQLAlchemy is basically Hibernate in Python.
support for inheritance (which is broken in Django)
Django's ORM supports:* Multi-table inheritance (just subclass and do stuff).
* Abstract parent classes (which get you most use cases for single-table inheritance).
* Pure-Python inheritance (via proxy models).
So I'm not sure how that's "broken".
But it's also worth noting that Django's ORM and SQLAlchemy approach the problem of ORM from opposite directions: Django starts at the object layer and works back to SQL, while SQLAlchemy starts at the SQL layer and works back to objects. Both have advantages and disadvantages, and both have their use cases.
Not overly good.
And that's the way it is.
Gotta love the journalism history of the framework coming through :)