How do I check whether data in a query exists?
For example:
users_query = User.query.filter_by(email='x@x.com')
How I can check whether users with that email exist?
I can check this with
users_query.count()
but how to check it with exists?
The following solution is a bit simpler:
from sqlalchemy.sql import exists
print session.query(exists().where(User.email == '...')).scalar()
The most acceptable and readable option for me is
session.query(<Exists instance>).scalar()
like
session.query(User.query.filter(User.id == 1).exists()).scalar()
which returns True
or False
.
Gary van der Merwe
There is no way that I know of to do this using the orm query api. But you can drop to a level lower and use exists from 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()
来源:https://stackoverflow.com/questions/7646173/sqlalchemy-exists-for-query