sqlalchemy существует для запроса - PullRequest
47 голосов
/ 04 октября 2011

Как проверить, существуют ли данные в запросе?

Например:

users_query = User.query.filter_by(email='x@x.com')

Как я могу проверить, существуют ли пользователи с таким адресом электронной почты?

Я могу проверить это с помощью

users_query.count()

но как это проверить с существует ?

Ответы [ 3 ]

67 голосов
/ 12 ноября 2012

Следующее решение немного проще:

from sqlalchemy.sql import exists

print session.query(exists().where(User.email == '...')).scalar()
19 голосов
/ 31 января 2017

Наиболее приемлемый и читабельный для меня вариант -

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

как

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

, который возвращает True или False.

13 голосов
/ 04 октября 2011

Я не знаю, как это сделать, используя API запроса orm. Но вы можете опуститься до уровня ниже и использовать существующие из 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()
...