def fetch_users():

В функции нужны корректные отступы, гарантированное закрытие cursor и connection, явный выбор полей и ограничение объёма результата; fetchall() загружает все строки в память.

Короткий ответ

Что ответить на собеседовании

В функции нужны корректные отступы, гарантированное закрытие cursor и connection, явный выбор полей и ограничение объёма результата; fetchall() загружает все строки в память.

Подробный разбор

Ответ с пояснениями

Условие

def fetch_users():

conn = db.connect("my_database")

cursor = conn.cursor()

cursor.execute("SELECT * FROM users")

result = cursor.fetchall()

return result

Ответ

В функции нужны корректные отступы, гарантированное закрытие cursor и connection, явный выбор полей и ограничение объёма результата; fetchall() загружает все строки в память.

Конкретный API зависит от драйвера, но общий шаблон такой:

from contextlib import closing

def fetch_users():
    with closing(db.connect("my_database")) as conn:
        with closing(conn.cursor()) as cursor:
            cursor.execute("SELECT id, name FROM users")
            return cursor.fetchall()

Поля id и name здесь пример ожидаемой схемы. Для большой таблицы нужны пагинация или пакетное чтение. При использовании пула соединение возвращают способом, предусмотренным пулом. Внешние параметры SQL передают через placeholders драйвера, а не конкатенацией строк.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее