flake8 在過濾子句中標記布林比較
當嘗試基於SQL 中的布林比較來過濾查詢結果時,開發人員可能會遇到以下警告: flake8 關於「==」的使用。雖然通常建議在其他地方使用“if cond is False:”或“if not cond:”進行布林比較,但這不適用於 SQLAlchemy 中的過濾子句。
在提供的範例中,布林欄位資料庫表中的 (obsoleted) 用於確定非廢棄測試案例的計數。程式碼在過濾子句中使用 TestCase.obsoleted == False。
caseNum = session.query(TestCase).filter(TestCase.obsoleted == False).count()<br>< ;/pre><p>但是,flake8 報告警告「E712:與False 的比較應該是'if cond is False:' 或'if not cond:'。」</p><p>要解決此警告,開發人員可能會嘗試更改程式碼以使用「is False」或「is not」運算子:</p><p></p><pre class="brush:php;toolbar:false">caseNum = session.query(TestCase).filter(TestCase.obsoleted is False)。 count()<br>
或
caseNum = session.query(TestCase).filter(not TestCase.obsoleted).count()<br><p>不幸的是,這些修改會導致不正確的結果,回傳0 而不是預期的計數。這是因為 SQLAlchemy 中的篩選子句不支援「is」或「is not」運算子。 </p><p>要在不禁用flake8 的情況下解決此問題,開發人員可以在有問題的行上使用# noqa 註釋:</p><p></p><pre class="brush:php;toolbar:false">caseNum = session.query(TestCase). filter(TestCase.obsoleted == False) # noqa: E712<br>
或者,sqlalchemy.sql.expression .false 函數可以使用:
from alsesql .sql.expression import false<p>caseNum = session.query(TestCase).filter(TestCase.obsoleted == false() )<br></p>
其中回傳🎜>其中傳回所使用的SQL 方言的適當值。
以上是為什麼「flake8」在 SQLAlchemy 過濾子句中標記布林比較?的詳細內容。更多資訊請關注PHP中文網其他相關文章!