python – peewee实例匹配查询不存在

我有以下代码,我在查询我的peewee数据库.我在具有term.sets_term_id的行上的for循环中收到错误.这是错误TermsDoesNotExist:实例匹配查询不存在:如果我执行变量(term),则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")

解决方法

问题出在你的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'})

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...