由于你只想查看用户是否存在,因此你不想查询整个对象。只需查询id,如果标量返回不为None,它就存在。
exists = db.session.query(User.id).filter_by(name='davidism').scalar() is not None
SELECt user.id AS user_id FROM user WHERe user.name = ?
你显示的第二个查询也可以正常工作,Flask-SQLAlchemy不会阻止SQLAlchemy进行任何类型的查询。这将返回
False或
True而不是
None上面的id,但是它稍微贵一点,因为它使用了子查询。
exists = db.session.query(db.exists().where(User.name == 'davidism')).scalar()
SELECt EXISTS (SELECT * FROM user WHERe user.name = ?) AS anon_1



