Mysql dbテーブルにブールフィールドがあります。
# table model
class TestCase(Base):
__tablename__ = 'test_cases'
...
obsoleted = Column('obsoleted', Boolean)
廃止されていないすべてのテストケースの数を取得するには、次のように簡単に実行できます。
caseNum = session.query(TestCase).filter(TestCase.obsoleted == False).count()
print(caseNum)
これは正常に機能しますが、flake8は次の警告を報告します。
E712:Falseとの比較は、「条件がFalseの場合:」または「条件でない場合:」である必要があります。
わかりました。だから私のコードをこれに変更してください:
caseNum = session.query(TestCase).filter(TestCase.obsoleted is False).count()
または
caseNum = session.query(TestCase).filter(not TestCase.obsoleted).count()
しかし、どちらも機能しません。結果は常に0です。フィルター句は演算子「is」または「is not」をサポートしていないと思います。この状況への対処方法を誰かに教えてもらえますか?フレークを無効にしたくありません。
これは、SQLAlchemyフィルターが_== False
_が実際に意味をなす数少ない場所の1つであるためです。 他のすべての場所では使用しないでください使用しない。
_# noqa
_コメントを行に追加して、コメントを完了します。
または、 _sqlalchemy.sql.expression.false
_ を使用できます。
_from sqlalchemy.sql.expression import false
TestCase.obsoleted == false()
_
ここで、false()
は、セッションSQLダイアレクトの正しい値を返します。一致する _sqlalchemy.expression.true
_ があります。
@Jruvステートメントの前で# noqa
を使用すると、警告は無視されます。