Each object be an singleton though the entire application
So, SQLAlchemy uses an identity-map to do this kind of thing. Which brings a lot of other logic into the equation, such as the concept of session/object lifetimes, aggregating changes during commit, etc.

Peewee, on the other hand, is an active-record ORM. Objects are containers for row data rather than canonical representations of the rows themselves. I find this mental model easier to work with. I know which queries are going to be executed and when they'll run.

It's a matter of preference, but peewee is fundamentally different from SQLAlchemy in this regard.
SQLAlchemy has a neat feature where everytime an object of a model is instantiated, if this instance already existed, it would return the same object it already had (exactly). As an example, if you select objects from the database twice, both answers would be the same, including the `id()` of the objects.

It's a really interesting approach as we can select objects from anywhere in the code, change it's values and it will change anywhere this object exists too (as they are the same).

This would avoid problems where you already have the instance somewhere, select for the object in another function, change it's values but the first object will remain intact.

Is it an option for Peewee? I don't even know how hard it would be to implement it.

Here's an example code of what I mean.

```python
from peewee import *


class BaseModel(Model):
    class Meta:
        database = db


class User(BaseModel):
    username = CharField(unique=True)


db = SqliteDatabase('my_database.db')
db.connect()
db.create_tables([User])
charlie = User.create(username='charlie')
c1 = User.get(User.username == 'charlie')
c2 = User.get(User.username == 'charlie')

# Assert all of them are the same
assert id(charlie) == id(c1) == id(c2)
```