Peewee, a lightweight python ORM
charlesleifer.com
charlesleifer.com
I love SQLAlchemy: it is easy to use, rock solid, well documented, and fully-featured without trying to do everything at once (for example, it explicitly doesn't do caching).
The author and principal maintainer, Michael Bayer, does a fantastic job developing the project at a sensible pace and answering any questions on the mailing list quickly and patiently.
It is hands down one of the most well-run open source projects that I know of, and a fantastic ORM.
Again, it would be interesting to see how Peewee stacks up against it (performance-wise, since it obviously doesn't compete for features.)
This makes me skeptical. There's always some stupid, niggling little thing that each database does probably for no other reason than to be different for anyone else. ORMs can be challenging to write, and you never really get into one until you support 3 or 4 different databases. I'd be willing to bet that the code is a lot bigger than 1kloc by the time more databases get added.
I'm not trying to rain on anyone's parade -- I think it's great that the author has released this, and he admits that it's scratching an itch for himself. This just shouldn't be considered a python ORM solution, but rather an python ORM for SQLite that works for the cases the author designed.
Another wart: there is (or was) different named parameters to use when creating a database connection. One driver would use passwd, another would use password, for example.
Those issues aside - and they only bite you if you're using several different databases - I really liked the simplicity of the DB API. Coming from the boilerplate hell that was Java's API it was a godsend.
And once you want to start doing the more complex stuff, SQLAlchemy handles it all just fine, whereas other ORMs tend to fall short rather quickly.
However, I love SQLAlchemy. It is complex, and has a bit of a steep learning curve, but it is very very flexible. Nearly everything you can do in SQL, the most complex queries, you can do in SQLAlchemy. But without writing actual SQL. Composing queries using Python expressions is simply great.
https://github.com/rails/arel https://github.com/jeremyevans/sequel