✅ Решения
⚡ Кратко: суть занятия
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(), записать лишний индекс в таблицу, вставлять значения строкой вместо параметров ?.
Полное решение практической работы
import pandas as pd
import sqlite3
data = {
'id': [1, 2, 3, 4, 5],
'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'age': [25, 30, 35, 40, 45],
'salary': [50000, 60000, 70000, 80000, 90000]
}
employees_df = pd.DataFrame(data)
db_path = 'example_database.db'
conn = sqlite3.connect(db_path)
employees_df.to_sql('employees', conn, if_exists='replace', index=False)
Запросы
query1 = 'SELECT * FROM employees;'
df1 = pd.read_sql_query(query1, conn)
print('1. Все данные из таблицы:')
print(df1)
query2 = 'SELECT * FROM employees WHERE age > 30;'
df2 = pd.read_sql_query(query2, conn)
print('\n2. Сотрудники старше 30 лет:')
print(df2)
query3 = 'SELECT * FROM employees WHERE salary > 60000;'
df3 = pd.read_sql_query(query3, conn)
print('\n3. Сотрудники с зарплатой больше 60000:')
print(df3)
query4 = 'SELECT * FROM employees ORDER BY age;'
df4 = pd.read_sql_query(query4, conn)
print('\n4. Сотрудники, упорядоченные по возрасту:')
print(df4)
query5 = 'SELECT AVG(salary) AS avg_salary FROM employees;'
df5 = pd.read_sql_query(query5, conn)
print('\n5. Средняя зарплата сотрудников:')
print(df5)
query6 = 'SELECT COUNT(id) AS number_employees FROM employees;'
df6 = pd.read_sql_query(query6, conn)
print('\n6. Количество сотрудников:')
print(df6)
conn.close()
Первые три запроса возвращают строки, четвёртый меняет порядок выдачи, пятый и шестой возвращают агрегированные значения.