【问题标题】:peewee instance matching query does not existpeewee 实例匹配查询不存在
【发布时间】:2016-05-18 19:59:06
【问题描述】:

我有以下代码查询我的 peewee 数据库。我在具有 term.sets_term_id 的行的 for 循环中遇到错误。这是错误 TermsDoesNotExist: Instance matching query does not exist: If I do vars(term) then sets_terms_id 是一个选项。为什么会出现这个错误,我该如何解决?

def get_api_response(id):
    response = {}
    print("id is " + str(id))
    try:
        sets = models.Sets.select().where(models.Sets.user_id == id)

    except models.DoesNotExist:
        return json.loads({'error' : 'that set does not exist'})
    else:
        print("it was successful")
        for term in sets:
            print(term.sets_term_id)

这是我的集合和术语模型

class Terms(UserMixin, BaseModel):
    term_id = CharField()
    sets_id = CharField()
    rank = IntegerField()
    term = TextField()
    definition = TextField()

    @classmethod
    def include_term(cls, set_id, term_id, definition, rank, term, **kwards):
        try:
            cls.select().where(cls.term_id == term_id).get()
        except cls.DoesNotExist:
            print("putting term into db")
            concept = cls(
                sets_id = set_id,
                term_id = term_id,
                definition = definition,
                rank = rank,
                term= term)
            concept.save()
            print(concept.term)
            print("term saved to db")
            return concept
        else:
            raise Exception("Term with that id already exists")

class Sets(UserMixin, BaseModel):
    user_id = CharField()
    name_set = CharField()
    #created_date = DateField()
    #modified_date = DateField()
    #published_date = DateField()
    sets_term_id = ForeignKeyField(Terms, to_field="sets_id")

    @classmethod
    def include_set(cls, user_id, name_set, sets_term_id, **kwards):
        try:
            cls.select().where(
                (cls.name_set == name_set) | (cls.sets_term_id == sets_term_id)
            ).get()
        except cls.DoesNotExist:
            print("putting set into db")
            quizlet_set = cls(
                user_id = user_id, 
                name_set = name_set,
                sets_term_id = sets_term_id)
            print(quizlet_set.name_set)
            quizlet_set.save()
            print("set saved in db")

            return quizlet_set
        else:
            raise Exception("Set with that name already exists")  

【问题讨论】:

    标签: python flask peewee


    【解决方案1】:

    问题出在你的 except 块中。

     except models.DoesNotExist:
        return json.loads({'error' : 'that set does not exist'})
    

    应该是:

     except models.Sets.DoesNotExist:
        return json.loads({'error' : 'that set does not exist'})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-26
      • 2012-05-10
      • 2013-03-02
      • 2021-12-10
      • 2021-05-07
      • 2017-01-12
      • 2014-04-12
      相关资源
      最近更新 更多