Вернуть единственную запись peewee как dict

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

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

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

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

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

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

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

person thosphor    schedule 19.12.2018    source источник
comment
Я не знаю peewee, но, возможно, вы можете позвонить vars по результату: one_user = vars(one_user)   -  person Peter Wood    schedule 19.12.2018
comment
я думаю, что ваш вопрос тесно связан с этим: stackoverflow.com/questions/ 21975920/peewee-model-to-json вы можете создать другую модель, которая может преобразовать вашего пользователя в json   -  person Vaibhav gusain    schedule 19.12.2018


Ответы (3)


Вы можете использовать ".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()

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

person coleifer    schedule 19.12.2018


в отношении модели Peewee для JSON

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

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

userDict = json.dumps(str(user))

вы получите словарь пользователя

person Vaibhav gusain    schedule 19.12.2018