I'm also looking at Django, which I like, since its ORM is built-in. However, I think Django might be a little more than I really need (i.e. more features than I really need == slower?).
Anyone have any experience with different Python ORM solutions that can compare and contrast their features and functionality, speed, efficiency, etc.?
SQLAlchemy is more full-featured and powerful (uses the DataMapper pattern). Django ORM has a cleaner syntax and is easier to write for (ActiveRecord pattern). I don't know about performance differences.
SQLAlchemy also has a declarative layer that hides some complexity and gives it a ActiveRecord-style syntax more similar to the Django ORM.
I wouldn't worry about Django being "too heavy." It's decoupled enough that you can use the ORM if you want without having to import the rest.
That said, if I were already using CherryPy for the web layer and just needed an ORM, I'd probably opt for SQLAlchemy.
If you're looking for lightweight and are already familiar with django-style declarative models, check out peewee: https://github.com/coleifer/peewee
import datetime from peewee import * class Blog(Model): name = CharField() class Entry(Model): blog = ForeignKeyField(Blog) title = CharField() body = TextField() pub_date = DateTimeField(default=datetime.datetime.now) # query it like django Entry.filter(blog__name='Some great blog') # or programmatically for finer-grained control Entry.select().join(Blog).where(Blog.name == 'Some awesome blog')
Check the docs for more examples.