📝 Задания для самопроверки
Вопрос 1. Сопоставьте методы
Сопоставьте вызов с его назначением:
- 1.
pymysql.connect(...) - 2.
connection.cursor() - 3.
cursor.execute(...) - 4.
connection.close()
- a. Закрывает соединение с базой данных
- b. Создаёт объект для отправки SQL-запросов
- c. Подключает Python к базе данных
- d. Выполняет SQL-запрос
Вопрос 2. Порядок действий
Найдите правильный порядок действий для подключения к базе и выполнения запроса:
- a. Создать курсор
- b. Подключиться к базе
- c. Выполнить запрос
- d. Закрыть соединение
- e. Закрыть курсор
Вопрос 3. Методы получения данных
Сопоставьте метод с его описанием:
- 1.
fetchone() - 2.
fetchall() - 3.
fetchmany()
- a. Считывает все строки разом
- b. Читает одну следующую строку
- c. Считывает заданное количество строк
Вопрос 4. Повторный вызов fetchall()
Что будет, если дважды вызвать fetchall() после одного и того же запроса?
- a. Вернутся все строки заново
- b. Возникнет исключение
- c. Вернётся пустой список
- d. Вернётся последняя строка результата
Вопрос 5. Параметризованные запросы
Какие параметры можно использовать в запросах cursor.execute()?
- a. Только позиционные
%s - b. Только именованные
%(name)s - c. И позиционные, и именованные
- d. Только строковые
Вопрос 6. Команда USE
Что делает SQL-команда USE?
Вопрос 7. DictCursor
Что делает DictCursor в PyMySQL?
Вопрос 8. Метод commit()
Что делает метод commit()?
- a. Закрывает соединение
- b. Сохраняет изменения в базе
- c. Сохраняет изменения в базе и закрывает соединение
- d. Откатывает изменения
Вопрос 9. Метод rollback()
Когда следует использовать rollback()?
- a. При успешной транзакции
- b. Чтобы сохранить изменения
- c. При возникновении ошибки во время транзакции
- d. После изменяющих запросов и перед SELECT
Вопрос 10. Цели транзакций
Что из перечисленного НЕ относится к целям использования транзакций?
- a. Гарантировать целостность данных
- b. Делать SELECT-запросы быстрее
- c. Обеспечивать атомарность операций
- d. Позволять откатить изменения при ошибке
Практика 1. Список сотрудников по убыванию зарплаты
Напишите программу, которая:
- подключается к базе данных
hr; - спрашивает у пользователя название департамента;
- выводит сотрудников выбранного департамента, отсортированных по убыванию зарплаты;
- добавляет нумерацию (не
employee_id).
Пример вывода:
Enter department: Marketing
1. Michael Hartstein — Marketing Manager — 13000.00
2. Pat Fay — Marketing Representative — 6000.00
Практика 2. Выбор департамента по номеру
Модифицируйте предыдущую программу так, чтобы пользователь выбирал департамент по номеру из списка, а не вручную вводил его название. После выбора выведите название департамента и продолжите выполнение.
Пример вывода:
Enter department number: 2
You choose: Marketing
1. Michael Hartstein — Marketing Manager — 13000.00
2. Pat Fay — Marketing Representative — 6000.00
Практика 3. Пустой департамент
Добавьте в программу проверку: если в выбранном департаменте нет сотрудников, вместо списка выведите сообщение:
No employees found in this department.
Практика 4. Фильтрация по зарплате
Если в выбранном департаменте есть сотрудники, добавьте возможность отфильтровать их по зарплате. Спросите пользователя:
Would you like to filter employees by salary? (y/n)
При ответе y попросите ввести знак сравнения и значение, затем выведите только подходящих сотрудников.
Практика 5. Повторный ввод при ошибке
Модифицируйте программу так, чтобы при вводе некорректного номера департамента пользователю предлагалось ввести его снова. Программа не должна завершаться, пока не будет введён корректный номер.
Проверка понимания
Выберите один вариант ответа. После клика правильный ответ подсветится зелёным.
Вопрос 1
Как лучше использовать summary-урок?
Вопрос 2
Что показывает хороший результат после повторения блока?
Вопрос 3
Какой вопрос стоит задать себе после каждого ответа?
Вопрос 4
Какой стиль имён переменных обычно рекомендует PEP 8?
Вопрос 5
Зачем использовать f-strings в современном Python?
Вопрос 6
Когда полезен ранний возврат из функции?
Вопрос 7
Что делает аннотация типа в Python?
Вопрос 8
Как лучше обрабатывать ожидаемую ошибку преобразования?