Есть ли разница между «fetchone ()» и «LIMIT 1» с использованием SQLAlchemy - PullRequest
0 голосов
/ 15 января 2019

При использовании SQLAlchemy для извлечения строки из базы данных вы можете использовать

query = "SELECT some_col FROM some_table"

row = session.execute(query).fetchone()

Однако вы также можете сделать:

query = "SELECT some_col FROM some_table LIMIT 1"

row = session.execute(query).fetchall()

Есть ли причина отдавать предпочтение одному, а другому, например, лучшая производительность?

1 Ответ

0 голосов
/ 30 января 2019

Первый вариант работает со всеми СУБД, второй - только с теми, которые поддерживают ключевое слово LIMIT, которое не является стандартным. Поэтому, если вы хотите указать базе данных, что хотите ограничить результат одной строкой, лучше использовать ядро ​​SQLAlchemy вместо оператора SQL в качестве строки. Что-то вроде:

row = session.execute(select([some_table.c.some_col]).limit(1)).fetchone()

Если вы действительно запрашиваете только одну строку с одним столбцом, вы можете рассмотреть scalar() вместо fetchone():

value = session.execute(select([some_table.c.some_col]).limit(1)).scalar()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...