🏠 Домашнее задание
⚡ Кратко: суть занятия
SQLite — лёгкая реляционная база данных без отдельного сервера: в Colab она хранится в обычном файле .db.
В Python подключение создаётся через sqlite3.connect('example_database.db'), а запросы выполняются через курсор или pandas.
Для изменений нужен conn.commit(): без него таблица или вставленные строки могут не сохраниться.
Минимальный пример: создать DataFrame, записать его через df.to_sql('employees', conn, if_exists='replace', index=False), затем прочитать через pd.read_sql_query().
SQL-запросы из занятия повторяют базовые действия: SELECT *, фильтр WHERE, сортировку ORDER BY, AVG и COUNT.
pandas удобен как мост: таблица живёт в DataFrame, а SQLite даёт возможность тренировать обычный SQL.
Топ-3 ошибки: забыть commit(), записать лишний индекс в таблицу, вставлять значения строкой вместо параметров ?.
Домашнее задание из LMS
База данных с доступом на чтение:
hostname: ich-db.edu.itcareerhub.deusername: ich1password: password
- Выберите только те строки из таблицы
suppliers, гдеcompanyимеет значениеSupplier A. - Выведите все строки там, где
purchase_order_idне указано. Дополнительно создайте столбецtotal_priceкакquantity * unit_price. - Выведите, какая дата будет через 51 день.
- Посчитайте количество уникальных заказов
purchase_order_id. - Выведите все столбцы таблицы
order_detailsи дополнительный столбецpayment_methodизpurchase_orders. Оставьте только заказы, для которых известенpayment_method.
Пошаговое решение
SELECT *
FROM suppliers
WHERE company = 'Supplier A';
SELECT *, quantity * unit_price AS total_price
FROM order_details
WHERE purchase_order_id IS NULL;
SELECT CURRENT_DATE + INTERVAL 51 DAY AS date_after_51_days;
SELECT COUNT(DISTINCT purchase_order_id) AS unique_purchase_orders
FROM order_details;
SELECT od.*, po.payment_method
FROM order_details AS od
JOIN purchase_orders AS po
ON po.id = od.purchase_order_id
WHERE po.payment_method IS NOT NULL;
Проверяйте каждое задание отдельно: сначала строки фильтрации, затем вычисляемые столбцы и только после этого соединение таблиц.
date('now', '+51 days'). Это не часть LMS-задания, а перенос идеи на SQLite.