web-dev-qa-db-ja.com

クエリにはsqlalchemyが存在します

クエリ内のデータが存在するかどうかを確認するにはどうすればよいですか?

例えば:

users_query = User.query.filter_by(email='[email protected]')

その電子メールを持つユーザーが存在するかどうかを確認するにはどうすればよいですか?

これを確認できます

users_query.count()

しかし、existsでチェックする方法は?

50
lestat

次の解決策は少し簡単です。

from sqlalchemy.sql import exists

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

私にとって最も受け入れやすく読みやすいオプションは

session.query(<Exists instance>).scalar()

のような

session.query(User.query.filter(User.id == 1).exists()).scalar()

TrueまたはFalseを返します。

24
Eugene Kovalev

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