An ORM lets you work with Python (or other language) objects while it generates the SQL. It saves boilerplate, but it can hide how many queries run, so you still need to read the SQL it emits.