💻 Примеры
⚡ Кратко: суть занятия
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(), записать лишний индекс в таблицу, вставлять значения строкой вместо параметров ?.
Пример 1: создать таблицу и добавить строку
import sqlite3
conn = sqlite3.connect('my_database.db')
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER,
email TEXT
)
''')
cursor.execute(
'INSERT INTO users (name, age, email) VALUES (?, ?, ?)',
('John Doe', 25, 'johndoe@example.com')
)
conn.commit()
Здесь IF NOT EXISTS добавлен, чтобы повторный запуск ячейки не падал из-за уже созданной таблицы.
IF NOT EXISTS не приведена в источнике, она добавлена как практическое улучшение для повторного запуска ячеек Colab.Пример 2: прочитать строки через курсор
cursor.execute('SELECT * FROM users')
rows = cursor.fetchall()
for row in rows:
print(row)
Ожидаемый результат — кортежи Python, по одному на каждую строку таблицы.
Пример 3: записать DataFrame и читать SQL в DataFrame
import pandas as pd
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)
employees_df.to_sql('employees', conn, if_exists='replace', index=False)
query = 'SELECT * FROM employees WHERE age > 30;'
older_employees = pd.read_sql_query(query, conn)
older_employees
Результат — строки сотрудников старше 30 лет: Charlie, David и Eve.