I have not used Peewee, but at first sight the most visible difference is the query syntax - Peewee uses method chaining, whereas Pony ORM decompiles Python AST. I think that many queries can look simpler in Pony than in Pewee.
For example, if I want to retrieve all pairs of different users with the same name, in Pony this query would look as follow:
select((u1, u2) for u1 in User for u2 in User if u1.name == u2.name and u1 != u2)
In Peewee, this query probably would look something like this (didn't test it):
For example, if I want to retrieve all pairs of different users with the same name, in Pony this query would look as follow:
In Peewee, this query probably would look something like this (didn't test it): It’s probable the matter of taste, but I like Pony syntax better. Another example is taken from the Peewee doc: In Pony, this query would look as follow: Also, this simple version is possible, don't know why it is not as simple in Peewee Also, I don’t know if Peewee supports IdentityMap and optimistics transactions.On there other side, it seems Peewee already has migration support, whereas in Pony migrations are not implemented yet, this is the next task.