返回单个皮尤记录作为dict

时间:2018-12-19 11:46:36

标签: python peewee

如果我从带有peewee的数据库中获取多条记录,则可以将它们转换为这样的dict:

# app/views.py

from .forms import SignUp
from .models import User

@app.route('/signup', methods=["GET", "POST"])
def signup():
    form = SignUp() # HERE
    if form.validate_on_submit():
    ...

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

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

但是我无法在该对象返回的对象上调用one_user = User.get(User.name == some_value)
有没有办法以字典形式获取该get查询的结果?

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

.dicts()

3 个答案:

答案 0 :(得分:0)

peewee具有扩展功能model_to_dict,在playhouse中定义。从示例中:

>>> from playhouse import model_to_dict

>>> user = User.create(username='charlie')
>>> model_to_dict(user)
{'id': 1, 'username': 'charlie'}

答案 1 :(得分:0)

您可以使用“ .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。您可以扩展它。

答案 2 :(得分:-1)

关于Peewee model to JSON

我认为您应该实现链接中定义的 str 方法,然后再执行。

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

userDict = json.dumps(str(user))

您将获得用户的专长