I'm in the process of writing a forum-like discussion component for a larger web application, and I am debating on whether or not I should use the full sqlalchemy ORM, or just the expression language. Using the expression language(the underlying part of sqlalchemy which the ORM is built upon), I planned to take a general table data gateway approach (http://martinfowler.com/eaaCatalog/tableDataGateway.html), creating simple and light-weight data-access-objects (e.g. UserGate, TopicGate, PostGate, etc) that will serve as the data-access layer.<p>The expression language protects against injection attacks, handles connection pooling, and also provides a nice way of generating the sql queries (e.g. usergate.select(whereclause=(usergate.c.id == userid)).execute() ). However, this approach will certainly necessitate more boilerplate code; I am wondering if this is acceptable since it will use much less internal function calls than the ORM.<p>I'd greatly appreciate some feedback, especially from people who have used sqlalchemy core to implement a custom data-access layer.<p>I read this article, but didn't get that much information from it tbh: http://stackful-dev.com/discovering-sqlalchemy-core-the-relational-nosql-api-for-python.html