12

我有一个奇怪的问题。我有一个返回布尔值的方法。反过来,我需要再次返回该函数的结果,因为我不能直接从前端调用该方法。这是我的代码:

# this uses bottle py framework and should return a value to the html front-end
@get('/create/additive/<name>')
def createAdditive(name):
    return pump.createAdditive(name)



 def createAdditive(self, name):
        additiveInsertQuery = """ INSERT INTO additives
                                  SET         name = '""" + name + """'"""
        try:
            self.cursor.execute(additiveInsertQuery)
            self.db.commit()
            return True
        except:
            self.db.rollback()
            return False

这会引发异常: TypeError("'bool' object is not iterable",)

我根本没有收到此错误,因为我没有尝试“迭代”布尔值,只是返回它。

如果我返回一个字符串而不是 boolean 或 int 它按预期工作。这里可能是什么问题?

追溯:

Traceback (most recent call last):
  File "C:\Python33\lib\site-packages\bottle.py", line 821, in _cast
    out = iter(out)
TypeError: 'bool' object is not iterable
4

1 回答 1

17

看回溯:

Traceback (most recent call last):
  File "C:\Python33\lib\site-packages\bottle.py", line 821, in _cast
    out = iter(out)
TypeError: 'bool' object is not iterable

您的代码不是迭代值,而是接收它的代码。

解决方案是:返回一个可迭代的。我建议您将 bool 转换为字符串 ( str(False)) 或将其包含在元组 ( (False,)) 中。

始终阅读回溯:它是正确的,而且很有帮助。

于 2013-07-13T14:48:30.753 回答