Comment puis-je ajouter le filtre comme dans SQL pour sélectionner des valeurs qui ne sont PAS NULL dans une certaine colonne?
SELECT *
FROM table
WHERE YourColumn IS NOT NULL;
Comment puis-je faire de même avec les filtres SQLAlchemy?
select = select(table).select_from(table).where(all_filters)
python
sqlalchemy
salamey
la source
la source
all_filters
ici? Pourquoi leselect_from
?Réponses:
column_obj != None
produira uneIS NOT NULL
contrainte :ou utilisez
isnot()
(nouveau dans 0.7.9):Démo:
la source
is
ne peut pas être surchargé par des classes personnalisées comme cela!=
peut l'être.À partir de la version 0.7.9, vous pouvez utiliser l'opérateur de filtre
.isnot
au lieu de comparer des contraintes, comme ceci:query.filter(User.name.isnot(None))
Cette méthode n'est nécessaire que si pep8 est un problème.
source: documentation sqlalchemy
la source
NULL
n'est pas valide comme le RHS de!=
SQL et l'utilisation deisnot
mieux transmet vos intentions quant à ce à quoi vous voulez que l'instruction générée ressemble.!= NULL
cependant pas, même si vous utilisezcolumn != None
du côté Python; vous obtenezIS NOT NULL
. L'utilisation.isnot()
vous permet cependant de forcerIS NOT
sur d'autres types (pensez.isnot(True)
aux colonnes booléennes, par exemple).Au cas où quelqu'un d'autre se demanderait, vous pouvez utiliser
is_
pour générerfoo IS NULL
:la source