クエリ内のデータが存在するかどうかを確認するにはどうすればよいですか?
例えば:
users_query = User.query.filter_by(email='[email protected]')
その電子メールを持つユーザーが存在するかどうかを確認するにはどうすればよいですか?
これを確認できます
users_query.count()
しかし、existsでチェックする方法は?
次の解決策は少し簡単です。
from sqlalchemy.sql import exists
print session.query(exists().where(User.email == '...')).scalar()
私にとって最も受け入れやすく読みやすいオプションは
session.query(<Exists instance>).scalar()
のような
session.query(User.query.filter(User.id == 1).exists()).scalar()
True
またはFalse
を返します。
Orm query apiを使用してこれを行う方法を知っている方法はありません。しかし、レベルを下げてsqlalchemy.sql.expressionから exists を使用できます。
from sqlalchemy.sql.expression import select, exists
users_exists_select = select((exists(users_query.statement),))
print engine.execute(users_exists_select).scalar()