Saturday, May 27, 2006

SQLAlchemy world domination tour

Python database tools have tended to suffer from the the 80% problem. (Open-source hackers tend to come up with solutions that solve 80% of a problem. Then someone else comes along and covers a different 80% of the same problem. And so on, so you end up with different solutions that attack the same problem, none of which are general enough for others to build on.) SQLAlchemy is making this a thing of the past, thanks to Mike Bayer's hard work. And, increasingly, others.

SQLAlchemy made its second major release today, the big zero-dot-two-oh. (Mike is conservative with version numbers; most projects would call this 0.9 if not 1.0.) There's also a migration guide for porting 0.1-based code.

SQLAlchemy lives up to its billing as The Python SQL Toolkit and Object Relational Mapper. (Emphasis mine.) This is possible is because of the extensive under-the-hood effort Mike has expended keeping dependencies to a minimum; you really can build on its functionality at any level -- not just the high-level ORM.

Some projects building on SQLAlchemy:

This is already more than older ORM tools have gathered in years! Not bad for a project whose first release was less than four months ago. SQLAlchemy is filling a real need for many people.

6 comments:

Anonymous said...

it's worth mentioning that sqlalchemy now supports MS-SQL Server, for those that are stuck with it.

Jonathan Ellis said...

Yes; I should have mentioned that SA already supports a lot of databases. Firebird is another one supported by SA that doesn't usually get much love.

Asheesh Laroia said...

I was going to use your SQLSoup, but it simply choses not to map my MySQL ENUM() column to a class variable! That's a showstopper for using for my scripts to manipulate the WordPress tables, which use ENUMs.

In fact, I think this is because SQLAlchemy doesn't suppport ENUM() at all. Google sqlalchemy+enum and you find nothing really relevant....

Jonathan Ellis said...

It's true that SQLAlchemy has focused more on supporting SQL standards than vendor extensions to date.

Anonymous said...

SQLSoup: not found?

This link in your post http://spyced.blogspot.com/spyced.blogspot.com/2006/04/introducing-sqlsoup.html

appears to be broken. Did you scratch your project?

Jonathan Ellis said...

No, I just screwed up the link. Thanks for pointing that out; fixed now.