Maison >base de données >tutoriel mysql >Comment assimiler correctement les booléens en Python pour les requêtes SQLAlchemy ?

Comment assimiler correctement les booléens en Python pour les requêtes SQLAlchemy ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-27 03:18:30475parcourir

 How to Properly Equate Booleans in Python for SQLAlchemy Queries?

Équation des booléens en Python : traitement des avertissements Flake8

En Python, comparer des booléens avec "==" peut déclencher des avertissements Flake8 lorsqu'ils sont utilisés dans un filtre clauses pour les requêtes SQLAlchemy. Plus précisément, l'avertissement « E712 : La comparaison avec False devrait être 'if cond is False:' ou 'if not cond:'" est émis.

Pour résoudre ce problème, il existe trois approches possibles :

  • Supprimez l'avertissement avec #noqa : Ajoutez un commentaire #noqa à la ligne incriminée pour supprimer l'avertissement flake8. Il s'agit de la solution la plus simple, mais elle ne résout pas le problème sous-jacent.
  • Utiliser l'expression SQL "IS" : Les filtres SQLAlchemy prennent en charge l'expression SQL "IS". Au lieu de "TestCase.obsoleted == False", vous pouvez utiliser "TestCase.obsoleted.is_(False)". Cela fonctionnera dans différents dialectes de base de données.
  • Utilisez sqlalchemy.sql.expression.false : Importez "sqlalchemy.sql.expression" et utilisez "TestCase.obsoleted == sqlalchemy.sql.expression .FAUX()". Cette méthode renvoie la valeur correcte pour le dialecte SQL de session spécifique. Il existe également un "sqlalchemy.expression.true()" correspondant.

Il est important de noter que même si la comparaison des booléens avec "==" dans les clauses de filtre est techniquement correcte dans SQLAlchemy, cela peut conduire à confusion dans d’autres contextes. Par conséquent, il est recommandé d'éviter d'utiliser "==" pour les comparaisons booléennes dans les clauses sans filtre afin d'éviter des problèmes potentiels.

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