Comment vérifier si des données dans une requête existent?
Par exemple:
users_query = User.query.filter_by(email='[email protected]')
Comment puis-je vérifier si des utilisateurs avec cet e-mail existent?
Je peux vérifier cela avec
users_query.count()
mais comment le vérifier avec existe?
La solution suivante est un peu plus simple:
from sqlalchemy.sql import exists
print session.query(exists().where(User.email == '...')).scalar()
L'option la plus acceptable et la plus lisible pour moi est
session.query(<Exists instance>).scalar()
comme
session.query(User.query.filter(User.id == 1).exists()).scalar()
qui renvoie True
ou False
.
Il n'y a aucun moyen que je sache de le faire en utilisant l'api de requête orm. Mais vous pouvez descendre à un niveau inférieur et utiliser existe à partir de sqlalchemy.sql.expression:
from sqlalchemy.sql.expression import select, exists
users_exists_select = select((exists(users_query.statement),))
print engine.execute(users_exists_select).scalar()