For some projects I'm working on, the lack of explicit control over transactions is a deal breaker. (There may very well be a way to get explicit transaction control, but I sure can't find it.) Not to mention the fact that in several respects the bog-standard python DB-API is superior to what you have to wrastle with inside ZSQL templates. Chris's "it's just python, guys" comment is misleading, while true; python is both a way of doing things and a specific implementation. Zope strips from you almost everything you'd expect to be doing if you had experience working with relational DBs with python outside of zope.