scalars() возвращает объект ScalarResult с первым значением каждой строки результата. Перечисленные выше методы Result также доступны для этого нового объекта результата.
scalar() возвращает первое значение первой строки результата.
```
user = session.scalar(query)
```
Пример запроса
```
tokens = session.scalars(user.tokens.select().order_by(Token.expiration)).all()
```
Чтобы выполнить запрос, его можно передать методу execute() объекта session:
```
results = session.execute(query)
```
Возвращаемое значение из вызова execute() — это объект Result, который функционирует как итерируемый объект, возвращающий объекты Row с интерфейсом, аналогичным именованному кортежу. Если вы предпочитаете получать результаты, не повторяя их, есть несколько методов, которые можно вызвать для этого объекта.
Вот некоторые из них:
all() чтобы вернуть список с объектом строки для каждой строки результата.
first() чтобы вернуть первую строку результата.
one() чтобы вернуть первую строку результата и вызвать исключение, если результатов нет или их несколько.
one_or_none() чтобы вернуть первую строку результата или None если результатов нет, или вызвать исключение если есть более одного результата.
Подробнее - https://docs.sqlalchemy.org/en/20/core/connections.html#sqlalchemy.engine.CursorResult.one