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)
column_obj != None
Produira une contrainte IS NOT NULL
:
Dans un contexte de colonne, produit la clause
a != b
. Si la cible estNone
, produit unIS 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 deNone
, ce qui donneNULL
. Cependant, l'utilisation explicite deIS 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'
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
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