返回单个皮尤记录作为dict

tho*_*hor 4 python peewee

如果我从带有peewee的数据库中获取多条记录,则可以将它们转换为如下所示的字典:

users = User.select().where(User.attribute == some_value).dicts()
Run Code Online (Sandbox Code Playgroud)

但是,通常我只想要一条记录(或者知道只返回一条记录),所以我可以这样做:

one_user = User.get(User.name == some_value)
Run Code Online (Sandbox Code Playgroud)

但是我无法调用.dicts()该对象返回的对象。
有没有办法以dict形式获取该get查询的结果?

目前,我唯一能想到的就是非Python语言

one_user = User.select().where(User.name == some_value).dicts()[0]
Run Code Online (Sandbox Code Playgroud)

col*_*fer 7

您可以使用“.get()”:

one_user = User.select().where(User.name == some_value).dicts().get()
Run Code Online (Sandbox Code Playgroud)

虽然你也可以添加一个辅助方法:

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

这是蟒蛇。你可以扩展它。


Pet*_*ood 6

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'}
Run Code Online (Sandbox Code Playgroud)

  • 它是“from playhouse.shortcuts import model_to_dict”。您可能会因为它不起作用而投反对票。 (2认同)