les*_*tat 55 python sqlalchemy exists
如何检查查询中的数据是否存在?
例如:
users_query = User.query.filter_by(email='x@x.com')
Run Code Online (Sandbox Code Playgroud)
如何检查存在该电子邮件的用户?
现在我检查一下
users_query.count()
Run Code Online (Sandbox Code Playgroud)
但要检查它是否存在.
谢谢!
Cit*_*ito 70
以下解决方案稍微简单一点:
from sqlalchemy.sql import exists
print session.query(exists().where(User.email == '...')).scalar()
Run Code Online (Sandbox Code Playgroud)
Eug*_*lev 26
对我来说,最可接受和最易读的选择是
session.query(<Exists instance>).scalar()
Run Code Online (Sandbox Code Playgroud)
喜欢
session.query(User.query.filter(User.id == 1).exists()).scalar()
Run Code Online (Sandbox Code Playgroud)
返回True
或False
.
Gar*_*rwe 14
我不知道使用orm查询api来做到这一点.但是你可以降低到更低的水平并使用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()
Run Code Online (Sandbox Code Playgroud)
pck*_*ko1 14
SqlAlchemy 1.4 2021 年答案
避免调用.query
,而是使用select
直接链接,.exists
如下所示:
from sqlalchemy import select
stmt = select(User).where(User.email=="x@x.com").exists()
Run Code Online (Sandbox Code Playgroud)
来源: https: //docs.sqlalchemy.org/en/14/core/selectable.html ?highlight=exists#sqlalchemy.sql.expression.exists