I have come to the same conclusion. ORMs make easy things easier, but difficult things impossible...
The best approach I've seen so far is webpy's (if we are talking of web apps). It isn't an ORM, it is just a way to make the database api easier to use. Queries don't return objects, they return something similar to dictionaries, which can be used with dot notation ( for example, result.name is equal to result['name'] ). A simple select query would be db.select('customers') or db.select('customers', name='John'). But you can also resort to plain sql as follows: db.query('select * from customers where name = "John"'). Simple, effective and doesn't get in your way. Luis -- http://mail.python.org/mailman/listinfo/python-list