Maison  >  Article  >  base de données  >  Pourquoi Flake8 s'oppose-t-il aux comparaisons booléennes dans les filtres SQLAlchemy et comment puis-je y remédier ?

Pourquoi Flake8 s'oppose-t-il aux comparaisons booléennes dans les filtres SQLAlchemy et comment puis-je y remédier ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-26 23:27:30690parcourir

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

Objection de Flake8 à la comparaison booléenne dans les clauses de filtre

Les linters de code déclenchent souvent des avertissements pour promouvoir les meilleures pratiques en matière de programmation. L'un de ces avertissements est le E712 de flake8, qui signale les comparaisons booléennes en utilisant "==" dans les clauses de filtre. Cet article explore le problème et propose d'autres moyens d'exprimer des conditions booléennes dans les requêtes SQLAlchemy.

Avertissement de Flake8

Comme illustré dans l'extrait de code fourni, flake8 met en garde contre des expressions telles que "TestCase.obsoleted == False" dans les clauses de filtre. Selon flake8, ces comparaisons doivent être écrites sous la forme "if cond is False:" ou "if not cond:".

Traitement des comparaisons booléennes par SQLAlchemy

Cependant, le code fourni fonctionne comme prévu malgré l'avertissement. En effet, les filtres SQLAlchemy constituent une exception à la règle générale. Dans ce contexte, "==" est un moyen acceptable de comparer les champs booléens.

Alternatives aux conditions booléennes dans les clauses de filtre

Bien que "==" soit acceptable dans les filtres SQLAlchemy, il est recommandé utiliser des approches alternatives qui correspondent aux meilleures pratiques. Deux solutions sont :

  • Désactiver l'avertissement Flake8 : En ajoutant un commentaire "#noqa" à la ligne problématique, vous pouvez supprimer l'avertissement.
  • Utilisez la fonction false() de SQLAlchemy : SQLAlchemy fournit une fonction appelée "false()" qui renvoie la valeur booléenne appropriée pour le dialecte SQL de la session. Vous pouvez utiliser cette fonction pour créer des conditions booléennes telles que :
from sqlalchemy.sql.expression import false

TestCase.obsoleted == false()

Cette approche répond non seulement aux préoccupations de flake8, mais garantit également la compatibilité avec différents dialectes SQL.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn