Ho un campo booleano nella tabella db mysql.flake8 si lamenta del confronto booleano "==" nella clausola filtro
# table model
class TestCase(Base):
__tablename__ = 'test_cases'
...
obsoleted = Column('obsoleted', Boolean)
Per ottenere il conteggio di tutti i casi non obsoleto di prova, che può essere fatto semplicemente in questo modo:
caseNum = session.query(TestCase).filter(TestCase.obsoleted == False).count()
print(caseNum)
Che funziona bene, ma la flake8 riportano il seguente avviso:
E712: Confronto su false dovrebbe essere "if cond è falso:" o "se non cond:"
Ok, penso che abbia senso. Quindi cambiare il mio codice a questo:
caseNum = session.query(TestCase).filter(TestCase.obsoleted is False).count()
o
caseNum = session.query(TestCase).filter(not TestCase.obsoleted).count()
Ma nessuno dei due può lavorare. Il risultato è sempre 0. Penso che la clausola del filtro non supporti l'operatore "è" o "non è". Qualcuno può dirmi come gestire questa situazione. Non voglio disabilitare il fiocco.
[PEP 8] (http://www.python.org/dev/peps/pep-0008/#programming-recommendations) specifica in modo specifico * contro * "se cond è False". Sono sorpreso che lo [strumento pep8] (http://pep8.readthedocs.org/en/latest/intro.html) faccia l'opposto. –