web-dev-qa-db-ja.com

TypeError( "'bool' object is iterable"、)ブール値を返そうとすると

奇妙な問題が発生しています。ブール値を返すメソッドがあります。次に、フロントエンドからメソッドを直接呼び出すことができないため、その関数の結果を再度返す必要があります。これが私のコードです:

# 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
6
DominicM

トレースバックを見てください:

_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,)_)ことをお勧めします。

常にトレースバックを読んでください。それは正しく、役に立ちます。

11
Marcin