web-dev-qa-db-fra.com

sqlalchemy existe pour la requête

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?

50
lestat

La solution suivante est un peu plus simple:

from sqlalchemy.sql import exists

print session.query(exists().where(User.email == '...')).scalar()
67
Cito

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.

24
Eugene Kovalev

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()
13