flake8이 필터 절의 부울 비교 "=="에 대해 불만을 제기합니다.
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"를 지원하지 않는다고 생각합니다.이 상황을 어떻게 처리해야 할지 누가 좀 알려주시겠어요?플레이크를 비활성화 시키고 싶지 않아요.
SQL Chemy 필터는 몇 안 되는 장소 중 하나이기 때문입니다.== False
말이 되네다른 곳은 사용하지 마세요.
를 추가합니다.# noqa
라인에 코멘트를 달아 주세요.
또는 다음을 사용할 수 있습니다.
from sqlalchemy.sql.expression import false
TestCase.obsoleted == false()
어디에false()
세션 SQL 방언의 올바른 값을 반환합니다.일치하는 것이 있습니다.
SQL Alchemy에는is_
그리고.isnot
사용할 수 있는 기능예를 들면 다음과 같습니다.
Model.filter(Model.deleted.is_(False))
어떤 쿼리가 생성되어 있는지 확인했습니다.SQLAlchemy
언제==
데이터베이스 사투리가 boolean 필드의 경우:
위해서
==
다음과 같은 것을 얻을 수 있습니다.field == False
로 변환됩니다.field = false
field == True
로 변환됩니다.field = true
field == None
로 변환됩니다.field IS NULL
위해서
is_()
다음과 같은 것을 얻을 수 있습니다.field.is_(False)
로 변환됩니다.field IS false
field.is_(True)
로 변환됩니다.field IS true
field.is_(None)
로 변환됩니다.field IS NULL
주의: is_(not None)
에 대해 평가되다is_(bool(not None)
무엇 때문에is_(True)
부여field = true
그러니 차라리 네가 해.isnot(None)
생산.field IS NOT NULL
왜 안 쓰세요?.filter_by(field=True)
/.filter_by(field=False)
?
@Jruv 사용# noqa
경고문 앞에서 경고를 무시합니다.
caseNum = session.query(TestCase).filter(~TestCase.obsoleted).count()
print(caseNum)
squalchemy 버전에서 실행해 보십시오.
언급URL : https://stackoverflow.com/questions/18998010/flake8-complains-on-boolean-comparison-in-filter-clause
'programing' 카테고리의 다른 글
명령줄에서 외부 키 검사 비활성화 (0) | 2022.09.21 |
---|---|
Python에서 오브젝트의 크기를 확인하는 방법은 무엇입니까? (0) | 2022.09.21 |
Java의 AbstractList의 removeRange() 메서드가 보호되는 이유는 무엇입니까? (0) | 2022.09.21 |
PHP의 효율적인 JPEG 이미지 크기 조정 (0) | 2022.09.21 |
python pander에서 data Frame을 두 개 이상의 열로 정렬하는 방법은 무엇입니까? (0) | 2022.09.21 |