1. ホーム
  2. python

[解決済み] ブール値を返そうとすると TypeError("'bool' object is not iterable",) が発生する。

2022-01-29 12:30:35

質問

不思議な問題を抱えています。私はブール値を返すメソッドを持っています。私はフロントエンドから直接メソッドを呼び出すことができないので、順番に私はその関数の結果を再び返す必要があります。以下は私のコードです。

# 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",) です。

私はbool値を返すだけで、"iterate"をしようとしていないので、このエラーは全く発生しません。

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

解決方法は?

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

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,) ).

トレースバックは必ず読みましょう。正しいですし、役に立ちます。