Flask-SQLAlchemy vérifie si la ligne existe dans la table
J'ai un Flacon d'application qui utilise en Flacon de SQLAlchemy pour se connecter à une base de données MySQL.
Je voudrais être en mesure de vérifier si une ligne est présente dans un tableau. Comment puis-je modifier une requête, afin de vérifier la ligne existe:
db.session.query(User).filter_by(name='John Smith')
J'ai trouvé une solution sur cette question qui utilise SQLAlchemy, mais ne semblent pas correspondre à la façon dont Flacon-SQLAlchemy travaux:
from sqlalchemy.sql import exists
print session.query(exists().where(User.email == '...')).scalar()
Grâce.
source d'informationauteur Pav Sidhu
Vous devez vous connecter pour publier un commentaire.
Puisque vous ne voulez voir que si l'utilisateur existe, vous ne voulez pas d'interroger l'ensemble de l'objet. Juste l'id de la requête, il existe si le scalaire de retour n'est pas Aucun.
La deuxième requête vous a montré fonctionne aussi très bien, en Flacon de SQLAlchemy ne fait rien pour empêcher tout type de requête que SQLAlchemy peut faire.
Envelopper un
.exists()
requête dans un autresession.query()
avec unscalar()
appel à la fin.Pardonner le détournement, mais ... avec les instructions données ici j'ai pris la suite de WTForm programme de validation pour vérifier l'unicité du champ
Il serait utilisé comme cela
Cependant, je voudrais avoir de l'API qui n'a pas besoin de db de la session de second param
Est-il possible de l'db session de modèle? Sans session, il semble impossible d'éviter le chargement de la totalité de l'objet à vérifier son existence.
Pense qu'il y a une faute de frappe dans davidism réponse, cela fonctionne pour moi: