Возврат единственной записи о peeeee как dict - PullRequest
0 голосов
/ 19 декабря 2018

Если я получаю несколько записей из базы данных с помощью peewee, я могу преобразовать их в слова вроде этого:

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

Однако часто мне нужна только одна запись (или я знаю, что только одна запись будетбудет возвращено), поэтому я могу сделать:

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

Но я не могу вызвать .dicts() для объекта, который возвращается этим.
Есть ли способ получить результат этого getзапрос в диктовке?

На данный момент единственное, что я могу придумать, это непифонический

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

Ответы [ 3 ]

0 голосов
/ 19 декабря 2018

peewee имеет функцию расширения model_to_dict, определенную в playhouse.shortcuts.Из примера:

>>> from playhouse.shortcuts import model_to_dict

>>> user = User.create(username='charlie')
>>> model_to_dict(user)
{'id': 1, 'username': 'charlie'}
0 голосов
/ 19 декабря 2018

Вы можете использовать ".get ()":

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

Хотя вы также можете добавить вспомогательный метод:

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

Это python.Вы можете продлить его.

0 голосов
/ 19 декабря 2018

в отношении Модель Peewee в JSON

Я думаю, вам следует реализовать метод str , как определено в ссылке, а затем, когда вы это сделаете.

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

userDict = json.dumps(str(user))

вы получите диктовку пользователя

...