Sqlalchemy返回标量



如果sqlalchemy返回子句有点乱,请考虑以下代码

stmt = insert(A).values({"data": "data", "id":2}).returning(A)
result = await session.execute(stmt)
print(type(result.scalar()))

输出只是打印一个整数

但如果我使用select语句而不是返回它给出映射行对象?

stmt = select(A).where(A.id == 2)
result = await session.execute(stmt)
print(type(result.scalar()))

为什么会发生这种情况?

第一次执行返回元组(2, 'data'),第二次执行返回(<__main__.A object at 0x7f32b9fbefe0>,)。然而调用结果。标量将

获取第一行的第一列,并关闭结果集

因此,第一次执行得到2,而第二次执行得到模型实例。

最新更新