Obligatory: long time since last entry, been busy, went to Africa, blah blah blah.
I've been using Django, unaware of TurboGear's existence. (Though I was using MochiKit, which is apparently part of it. Still, I missed the memo.) I love Django as a whole, but I hate their ORM. I want to be able to actually use the database properly, which means doing stuff like this:
cursor.execute("update blah blah") if cursor.rowcount == expected: conn.commit() return HttpResponseRedirect('/') # back to here as a GET else: conn.rollback() return HttpResponse(tConflict.render(...)) # or whatever
Here I'm doing optimistic locking. I also use transactions to add tightly interrelated data at once; a lot of software which handles your primary keys for you doesn't do this well. I execute non-trivial joins. I tend to hand-code my SQL for this reason. But ORMs are trendy and everyone wants one. SQLAlchemy's website at least tells me that they understand my complaints. Their feature list includes:
- SQLAlchemy doesn't view databases as just collections of tables; it sees them as relational algebra engines.
- Eager-load a graph of objects and their dependencies via joins
- Commit entire graphs of object changes in one step
- You can use the connection pool by itself and deal with raw connections
ORMs which don't have those features are useless to me. Think Django will switch?