Peewee模型中的类是否需要特定的顺序?

时间:2019-09-12 23:51:46

标签: mysql python-3.x database 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()

#...

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

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]

有人知道我为什么收到此错误的线索吗?

2 个答案:

答案 0 :(得分:0)

读取错误消息。告诉您不存在具有给定ID的用户。

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

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

答案 1 :(得分:-1)

好吧,我想我已经在这里解决了。与其直接查询服务器ID,我只是做了一个User.get(1),因为这似乎可以解决问题。更多阅读内容还显示还有get by id