Ich habe ein boolesches Feld in der mysql-db-Tabelle.flocke8 beschwert sich über booleschen Vergleich "==" in Filterklausel
caseNum = session.query(TestCase).filter(TestCase.obsoleted == False).count()
print(caseNum)
Das funktioniert gut, aber die folgende Warnung flake8 berichten:
# table model
class TestCase(Base):
__tablename__ = 'test_cases'
...
obsoleted = Column('obsoleted', Boolean)
Um die Anzahl aller nicht-veralteten Testfälle zu bekommen, das kann einfach so getan wird
E712: Vergleich auf false sollte "wenn cond falsch ist:" oder "wenn nicht Ltg:"
Okay, ich denke das macht Sinn. So meinen Code dies ändern:
caseNum = session.query(TestCase).filter(TestCase.obsoleted is False).count()
oder
caseNum = session.query(TestCase).filter(not TestCase.obsoleted).count()
Aber keiner von ihnen arbeiten können. Das Ergebnis ist immer 0. Ich denke, die Filterklausel unterstützt nicht den Operator "ist" oder "ist nicht". Kann mir jemand sagen, wie ich mit dieser Situation umgehen soll? Ich möchte den Flake nicht deaktivieren.
[PEP 8] (http://www.python.org/dev/peps/pep-0008/#programming-recommendations) rät ausdrücklich * gegen * "wenn cond ist False". Ich bin überrascht, dass das [pep8-Tool] (http://pep8.readthedocs.org/en/latest/intro.html) das Gegenteil tut. –