Flask-SQLAlchemy检查表中是否存在行

我有一个使用Flask-SQLAlchemy连接到MySQL数据库的Flask应用程序。

我希望能够检查表中是否存在行。我将如何修改查询以检查行是否存在:

db.session.query(User).filter_by(name='John Smith')

我找到了一个使用SQLAlchemy的问题的解决方案,但似乎不适合Flask-SQLAlchemy的工作方式:

from sqlalchemy.sql import exists    

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

回答:

由于你只想查看用户是否存在,因此你不想查询整个对象。只需查询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进行任何类型的查询。这将返回FalseTrue而不是None上面的id,但是它稍微贵一点,因为它使用了子查询。

exists = db.session.query(db.exists().where(User.name == 'davidism')).scalar()

SELECT EXISTS (SELECT * 

FROM user

WHERE user.name = ?) AS anon_1

以上是 Flask-SQLAlchemy检查表中是否存在行 的全部内容, 来源链接: utcz.com/qa/425352.html

回到顶部