ホームページ  >  記事  >  データベース  >  Flake8 が SQLAlchemy フィルターのブール値比較に反対するのはなぜですか?それを修正するにはどうすればよいですか?

Flake8 が SQLAlchemy フィルターのブール値比較に反対するのはなぜですか?それを修正するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-26 23:27:30690ブラウズ

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

フィルター節のブール比較に対する Flake8 の反対

コード リンターは、プログラミングのベスト プラクティスを促進するために警告を発することがよくあります。そのような警告の 1 つは flake8 の E712 で、フィルター句で「==」を使用したブール比較にフラグを立てます。この記事ではこの問題を調査し、SQLAlchemy クエリでブール条件を表現する別の方法を提供します。

Flake8 の警告

提供されたコード スニペットに示されているように、flake8 は「TestCase.obsoleted ==」のような式に対して警告します。フィルター句に「False」を指定します。 flake8 によると、これらの比較は「if cond is False:」または「if not cond:」として記述する必要があります。

SQLAlchemy のブール比較の処理

ただし、提供されたコードは意図したとおりに機能します。警告にもかかわらず。これは、SQLAlchemy フィルターが一般規則の例外であるためです。このコンテキストでは、ブール型フィールドを比較するには「==」が許容されます。

フィルター句のブール条件の代替

SQLAlchemy フィルターでは「==」が許容されますが、推奨されます。ベストプラクティスに沿った代替アプローチを使用すること。 2 つの解決策は次のとおりです:

  • Flake8 警告を無効にする: 問題のある行に「# noqa」コメントを追加することで、警告を抑制できます。
  • SQLAlchemy の false() 関数を使用します: SQLAlchemy は、セッションの SQL 言語に適切なブール値を返す「false()」と呼ばれる関数を提供します。この関数を使用して、次のようなブール条件を作成できます。
from sqlalchemy.sql.expression import false

TestCase.obsoleted == false()

このアプローチは、flake8 の問題に対処するだけでなく、さまざまな SQL 言語との互換性も保証します。

以上がFlake8 が SQLAlchemy フィルターのブール値比較に反対するのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。