我目前正在尝试在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]
有人知道我为什么收到此错误的线索吗?
答案 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。