Pros: A model instance is not tied to a specific sql driver, so working with for example a local db and a remote over json gets easier Example: customer = remotedb.load(Customer(22)) localdb.store(customer[0]) This is also the reason the model object should not have .load/.store methods, it would lock the instance to a specific database driver. The mapper can be used in custom code, for example in the wsgi api.py