⚡ Задания на сегодня
- Задача 1 (из лекции): создать движок для подключения к SQLite в памяти.
- Задача 2 (из лекции): создать сессию для работы с созданным движком.
- Задача 3: объявить модель
User (id, name, age) и добавить пользователя в БД.
- Задача 4: настроить логирование SQL-запросов через модуль
logging.
Полные решения — в разделе «Решения».
Задача 1 (из лекции): Создание движка
Цель: создать экземпляр движка для подключения к SQLite базе данных в памяти.
Создайте файл lesson05.py и напишите код, который:
- Импортирует
create_engine из sqlalchemy
- Создаёт движок для подключения к SQLite в памяти (
:memory:)
- Выводит сообщение об успешном создании движка
Проверка: скрипт должен запускаться без ошибок.
Задача 2 (из лекции): Создание сессии
Цель: создать сессию для взаимодействия с базой данных, используя движок из задачи 1.
Продолжите файл lesson05.py:
- Используйте движок из задачи 1
- Создайте сессию через
Session(engine) как контекстный менеджер
- Внутри сессии выведите сообщение «Сессия открыта»
Проверка: скрипт должен запускаться без ошибок, сообщение должно выводиться.
Задача 3: Модель User и добавление данных
Цель: объявить модель, создать таблицу и добавить запись в БД.
Дополните lesson05.py:
- Объявите базовый класс
Base(DeclarativeBase)
- Объявите модель
User с полями: id (primary key), name (String 30), age (Integer) — как в примере лекции
- Создайте таблицу через
Base.metadata.create_all(engine)
- Через сессию добавьте пользователя
User(name='John Doe', age=30)
- Выполните
commit() и выведите id созданного пользователя
Проверка: после запуска в консоли должен появиться id нового пользователя (должно быть 1).
Задача 4: Логирование SQL-запросов
Цель: настроить вывод SQL-запросов в консоль через модуль logging.
Добавьте в начало lesson05.py (до создания движка):
- Импортируйте модуль
logging
- Настройте базовое логирование:
logging.basicConfig(level=logging.INFO)
- Получите логгер
'sqlalchemy.engine' и установите ему уровень INFO
Проверка: при запуске в консоли должны появиться SQL-запросы вида CREATE TABLE и INSERT INTO.
Проверка понимания
Выберите один вариант ответа. После клика правильный ответ подсветится зелёным.
Вопрос 1
Что описывает модель SQLAlchemy?
Вопрос 2
Зачем нужна сессия SQLAlchemy?
Вопрос 3
Что такое веб-маршрут?
Вопрос 4
Почему API-ответы стоит валидировать?
Вопрос 5
Зачем отделять слой модели от слоя представления?
Вопрос 6
Что полезно проверять в API через Postman или аналог?
Вопрос 7
Что такое ORM?