<story><title>What ORMs have taught me: just learn SQL (2014)</title><url>http://woz.posthaven.com/what-orms-have-taught-me-just-learn-sql</url></story><parent_chain><item><author>andrewstuart</author><text>zzzeek - can I take this chance to praise your work on SqlAlchemy.  People say there&amp;#x27;s not enough thanks given to open source developers... here&amp;#x27;s thanks to you.  It&amp;#x27;s the work of a craftsman.</text></item><item><author>zzzeek</author><text>&amp;gt;  If you&amp;#x27;re using an RDBMS, bite the bullet and learn SQL.&lt;p&gt;If this person spent all that time using Hibernate and then SQLAlchemy, and all that time did &lt;i&gt;not&lt;/i&gt; know SQL, then their suffering and bad experiences make complete sense.  You absolutely need to know SQL if you&amp;#x27;re going to use an ORM effectively.  Good ORMs are there to automate the repetitive tasks of composing largely boilerplate DML statements, facilitating query composition, providing abstraction for database-specific and driver-specific quirks, providing patterns to map object graphs to relational graphs, and marshaling rows between your object model and database rows - that last one is something your application needs to do whether or not you write raw SQL, so you&amp;#x27;ll end up inventing that part yourself without an ORM (I recommend doing so, on a less critical project, to learn the kinds of issues that present themselves).   None of those things should be about &amp;quot;hiding SQL&amp;quot;, and you need to learn SQL first before you work with an ORM.</text></item></parent_chain><comment><author>jgraham</author><text>I&amp;#x27;m pretty sure that SqlAlchemy has caused more grief and frustration than any other single library. After all if I didn&amp;#x27;t know about the excellence of SqlAlchemy, maybe I wouldn&amp;#x27;t get so cross when I have to do anything non-trivial with the Django ORM ;)&lt;p&gt;Joking aside, SwlAlchemy is very impressive software, and zzzeek deserves all this praise and more. Every time that there&amp;#x27;s one of these anti-ORM articles I feel like SqlAlchemy pre-emtively addressed all the substantive criticisms in its flexible, well layered, design.&lt;p&gt;(And in the interests of fairness, Django&amp;#x27;s ORM is also very good at making simple things simple).</text></comment>
<story><title>What ORMs have taught me: just learn SQL (2014)</title><url>http://woz.posthaven.com/what-orms-have-taught-me-just-learn-sql</url></story><parent_chain><item><author>andrewstuart</author><text>zzzeek - can I take this chance to praise your work on SqlAlchemy.  People say there&amp;#x27;s not enough thanks given to open source developers... here&amp;#x27;s thanks to you.  It&amp;#x27;s the work of a craftsman.</text></item><item><author>zzzeek</author><text>&amp;gt;  If you&amp;#x27;re using an RDBMS, bite the bullet and learn SQL.&lt;p&gt;If this person spent all that time using Hibernate and then SQLAlchemy, and all that time did &lt;i&gt;not&lt;/i&gt; know SQL, then their suffering and bad experiences make complete sense.  You absolutely need to know SQL if you&amp;#x27;re going to use an ORM effectively.  Good ORMs are there to automate the repetitive tasks of composing largely boilerplate DML statements, facilitating query composition, providing abstraction for database-specific and driver-specific quirks, providing patterns to map object graphs to relational graphs, and marshaling rows between your object model and database rows - that last one is something your application needs to do whether or not you write raw SQL, so you&amp;#x27;ll end up inventing that part yourself without an ORM (I recommend doing so, on a less critical project, to learn the kinds of issues that present themselves).   None of those things should be about &amp;quot;hiding SQL&amp;quot;, and you need to learn SQL first before you work with an ORM.</text></item></parent_chain><comment><author>href</author><text>+1 SQLAlchemy has had a solution for every problem I threw at it in 5 years of heavy use!</text></comment>