PyPika is a DSL for creating SQL queries. It works by generating SQL from definitions that you create inline rather than by interpreting models or data classes or structures.
It makes it easy to define minimum projections and is also straight-forward to bind data to as you simply provide the values into the query that is generated rather than binding values to a query definition.
Once you have the query object constructed you call str on the object to obtain the actual SQL which you then need to pass to some execution context.
This also means that it is easy to test what SQL you are generating (although really using a DSL like this means you should really be trusting the library).
I have only had one real problem with the statements I have used to date and that is around the Postgres `RETURNING` statement that allows a generated key to be returned to the caller of an INSERT.
Apart from this using Pypika has been better than using a Python template or writing raw SQL.