web-dev-qa-db-fra.com

sqlalchemy IS NON NULL, sélectionnez

Comment puis-je ajouter le filtre comme en SQL pour sélectionner les valeurs qui ne sont pas NULL dans une colonne donnée?

SELECT * 
FROM table 
WHERE YourColumn IS NOT NULL;

Comment puis-je faire la même chose avec les filtres SQLAlchemy?

select = select(table).select_from(table).where(all_filters) 
71
salamey

column_obj != None Produira une contrainte IS NOT NULL :

Dans un contexte de colonne, produit la clause a != b. Si la cible est None, produit un IS NOT NULL.

ou utilisez isnot() (nouveau en 0.7.9):

Implémentez l'opérateur IS NOT.

Normalement, IS NOT Est généré automatiquement lorsque vous comparez à une valeur de None, ce qui donne NULL. Cependant, l'utilisation explicite de IS NOT Peut être souhaitable si vous comparez les valeurs booléennes sur certaines plates-formes.

Démo:

>>> from sqlalchemy.sql import column
>>> column('YourColumn') != None
<sqlalchemy.sql.elements.BinaryExpression object at 0x10c8d8b90>
>>> str(column('YourColumn') != None)
'"YourColumn" IS NOT NULL'
>>> column('YourColumn').isnot(None)
<sqlalchemy.sql.elements.BinaryExpression object at 0x104603850>
>>> str(column('YourColumn').isnot(None))
'"YourColumn" IS NOT NULL'
108
Martijn Pieters

A partir de la version 0.7.9, vous pouvez utiliser l'opérateur de filtrage .isnot Au lieu de comparer les contraintes, comme ceci:

query.filter(User.name.isnot(None))

Cette méthode n'est nécessaire que si pep8 est une préoccupation.

source: documentation de sqlalchemy

72
Filipe Spindola

Si quelqu'un d'autre se le demande, vous pouvez utiliser is_ générer foo IS NULL:

 >>> de la colonne d'importation sqlalchemy.sql 
 >>> imprimer la colonne ('foo'). is_ (Aucun) 
 foo IS NULL 
 >>> print colonne ('foo'). Isnot (Aucun) 
 Foo IS NON NULL 
25
Matthew Moisen