Search code examples
pythonpeewee

Return single peewee record as dict


If I'm getting multiple records from a database with peewee, I can convert them to dicts like this:

users = User.select().where(User.attribute == some_value).dicts()

However, often I only want one record (or know that only one record will be returned), so I can do:

one_user = User.get(User.name == some_value)

But I can't call .dicts() on the object which is returned by that.
Is there a way to get the result of that get query in dict form?

At the moment the only thing I can think of is the unpythonic

one_user = User.select().where(User.name == some_value).dicts()[0]

Solution

  • You can use ".get()":

    one_user = User.select().where(User.name == some_value).dicts().get()
    

    Though you can also add a helper method:

    class User(Model):
        @classmethod
        def get_as_dict(cls, expr):
            query = cls.select().where(expr).dicts()
            return query.get()
    

    It's python. You can extend it.