如果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
,而第二次执行得到模型实例。