首页 > 解决方案 > Peewee 模型中的类是否需要特定的排序?

问题描述

我目前正在尝试在 Peewee 中为应用程序创建一个 ORM 模型。但是,在查询特定模型时,我似乎遇到了问题。经过一番调试,我发现它是低于特定型号的任何东西,它都失败了。

我已经移动了模型(给定的 ForeignKeys 仍在检查中),并且出于某种奇怪的原因,它只是特定类(用户)之下的内容。

def get_user(user_id):
    user = User.select().where(User.id==user_id).get()
    return user

class BaseModel(pw.Model):
    """A base model that will use our MySQL database"""
    class Meta:
        database = db


class User(BaseModel):
    id = pw.AutoField()
    steam_id = pw.CharField(max_length=40, unique=True)
    name = pw.CharField(max_length=40)
    admin = pw.BooleanField(default=False)
    super_admin = pw.BooleanField()

#...

我希望能够像其他所有模型一样查询季节。但是,这是我遇到的 peewee 错误,当我尝试查询 1(即User.select().where(User.id==1).get()get_user(1))的 User.id 时,我得到一个返回的错误,该值甚至没有被输入。

UserDoesNotExist: <Model: User> instance matching query does not exist:
SQL: SELECT `t1`.`id`, `t1`.`steam_id`, `t1`.`name`, `t1`.`admin`, `t1`.`super_admin` FROM `user` AS `t1` WHERE %s LIMIT %s OFFSET %s
Params: [False, 1, 0]

有没有人知道我为什么会收到这个错误?

标签: mysqlpython-3.xdatabasepeewee

解决方案


阅读错误信息。它告诉您具有给定 ID 的用户不存在。

.get()如果调用不匹配任何行,Peewee 会引发异常。如果您想要“如果找不到则获取或无”,您可以做几件事。使用 try / except 包装对 .get() 的调用,或使用 get_or_none()。

http://docs.peewee-orm.com/en/latest/peewee/api.html#Model.get_or_none


推荐阅读