首頁 >資料庫 >mysql教程 >為什麼 Flake8 反對 SQLAlchemy 過濾器中的布林比較,以及如何修復它?

為什麼 Flake8 反對 SQLAlchemy 過濾器中的布林比較,以及如何修復它?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-26 23:27:30800瀏覽

 Why Does Flake8 Object to Boolean Comparisons in SQLAlchemy Filters, and How Can I Fix It?

Flake8 對過濾子句中布林比較的反對

程式碼檢查器經常發出警告以促進程式設計中的最佳實踐。 flake8 的 E712 就是這樣的警告之一,它在過濾子句中使用「==」來標記布林比較。本文探討了這個問題,並提供了在 SQLAlchemy 查詢中表達布林條件的替代方法。

Flake8 的警告

如提供的程式碼片段所示,flake8 針對諸如「TestCase.obsoleted ==」之類的表達式發出警告過濾子句中的「False」。根據 flake8,這些比較應該寫為「if cond is False:」或「if not cond:」。

SQLAlchemy 的布林比較處理

但是,提供的程式碼按預期工作儘管有警告。這是因為 SQLAlchemy 過濾器是一般規則的例外。在這種情況下,「==」是比較布林字段的可接受方式。

過濾子句中布林條件的替代方法

雖然「==」在 SQLAlchemy 過濾器中是可接受的,但建議使用使用符合最佳實踐的替代方法。兩個解決方案是:

  • 停用 Flake8 警告:透過在有問題的行添加「# noqa」註釋,可以抑制警告。
  • 使用 SQLAlchemy 的 false() 函數: SQLAlchemy 提供了一個名為「false()」的函數,該函數為會話的 SQL 方言傳回適當的布林值。您可以使用此函數建立布林條件,例如:
from sqlalchemy.sql.expression import false

TestCase.obsoleted == false()

這種方法不僅解決了 flake8 的問題,還確保了與不同 SQL 方言的兼容性。

以上是為什麼 Flake8 反對 SQLAlchemy 過濾器中的布林比較,以及如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn