django 查找通过SqlAlchemy访问的数据库中是否存在行或行集合中的一行的最快方法

bybem2ql  于 2023-06-07  发布在  Go
关注(0)|答案(1)|浏览(277)

Django有一个queryset.exists()方法,它可以获取bool,表明是否存在至少一行特定条件。
例如

User.objects.filter(id__in=[1, 2, 3, 4, 5], usernmae='test').exists()

如果至少有一行存在这些条件,它将返回bool True,反之则返回False。

Question-在SQLAlchemy > 2.0中是否可以使用asyncpg驱动程序来完成类似的操作?我发现的最好的是await session.get,但它可能会从DB中获取多个对象,将它们去零化等,而我只需要找出这些行中是否至少有一行存在?

e0bqpujr

e0bqpujr1#

你可以这样做:

async with async_session() as session:
    stmt = select(User.id).where(User.id.in_([4, 5])).limit(1)
    result = await session.scalars(stmt)
    item = result.first()

如果至少存在一行,则item将是int(truthy),否则将是None(falsy)。如果你想要一个真的布尔值,你总是可以这样做

row_exists = bool(result.first())

而是
在SQLAlchemy文档here中可以找到一个更完整的异步ORM示例。

相关问题