在Python的SQLAlchemy库中,session.execute和session.scalars都可以用于执行SQL语句并获取结果。然而,两者具有不同的特点和使用场景
session.execute和session.scalars的区别主要在于它们返回的结果类型不同。
- session.execute:这个方法主要用于执行SQL语句并返回整个结果集。当你执行SELECT语句时,它会返回一个列表,其中每个元素都是一个元组,代表一行记录。这种方式适用于需要获取所有查询结果的情况。例如:
from sqlalchemy import create_engine, text
engine = create_engine("sqlite:///example.db")
with engine.connect() as connection:
result = connection.execute(text("SELECT * FROM users"))
for row in result:
print(row)
- session.scalars:与session.execute不同,这个方法主要用于执行SQL语句并返回单个值。通常与COUNT、SUM、MAX或MIN等聚合函数一起使用。当你执行这样的SQL语句时,它会返回一个标量值,而不是整个结果集。例如:
from sqlalchemy import create_engine, text
engine = create_engine("sqlite:///example.db")
with engine.connect() as connection:
count = connection.scalar(text("SELECT COUNT(*) FROM users"))
print(count)
总结:session.execute用于获取所有查询结果,而session.scalars用于获取单个值。