06. SQLite и базы данных
SQLite и базы данных
Описание: В этом уроке вы узнаете, как хранить данные локально в базе данных SQLite. Мы научимся создавать таблицы, добавлять, читать и изменять записи, а также познакомимся с базовыми командами SQL.1. Что такое база данных
База данных (БД) — это структура, где данные хранятся в виде таблиц, строк и столбцов.SQLite — это встроенная база данных, которая не требует отдельного сервера. Она идеально подходит для небольших приложений и учебных проектов.
SQLite входит в стандартную библиотеку Python. Ничего устанавливать не нужно — модуль sqlite3 уже есть!
2. Подключение к базе данных
Создадим подключение и курсор (объект для выполнения SQL-запросов).
import sqlite3# Создание или подключение к базе данных
conn = sqlite3.connect('users.db')
# Создаём объект курсора
cursor = conn.cursor()
print('База данных успешно подключена!')
Если файл users.db отсутствует, он создастся автоматически в текущей папке.
3. Создание таблицы
Теперь создадим таблицу пользователей.
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER,
city TEXT
)
''')conn.commit() # сохраняем изменения
print('Таблица создана!')
4. Добавление данных
Добавим несколько пользователей:
cursor.execute('INSERT INTO users (name, age, city) VALUES (?, ?, ?)', ('Анна', 25, 'Москва'))
cursor.execute('INSERT INTO users (name, age, city) VALUES (?, ?, ?)', ('Иван', 30, 'Минск'))conn.commit()
print('Данные успешно добавлены!')
- ? — это параметр подстановки, защищает от SQL-инъекций.
- Метод commit() сохраняет изменения.
5. Чтение данных
Получим данные из таблицы:
cursor.execute('SELECT * FROM users')
rows = cursor.fetchall()for row in rows:
print(row)
Вывод:
(1, 'Анна', 25, 'Москва')
(2, 'Иван', 30, 'Минск')
6. Поиск и фильтрация
Ищем пользователя по имени:
name = 'Анна'
cursor.execute('SELECT * FROM users WHERE name = ?', (name,))
result = cursor.fetchall()
print(result)
7. Обновление данных
Изменим возраст пользователя:
cursor.execute('UPDATE users SET age = ? WHERE name = ?', (26, 'Анна'))
conn.commit()
print('Возраст обновлён!')
8. Удаление данных
Удалим пользователя по имени:
cursor.execute('DELETE FROM users WHERE name = ?', ('Иван',))
conn.commit()
print('Пользователь удалён!')
9. Пример мини-проекта: менеджер пользователей
Создадим простую программу, которая позволяет добавлять и просматривать пользователей.
import sqlite3def init_db():
conn = sqlite3.connect('people.db')
cur = conn.cursor()
cur.execute('''CREATE TABLE IF NOT EXISTS people (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)''')
conn.commit()
return conn
def add_user(conn, name, age):
cur = conn.cursor()
cur.execute('INSERT INTO people (name, age) VALUES (?, ?)', (name, age))
conn.commit()
print('Пользователь добавлен!')
def list_users(conn):
cur = conn.cursor()
cur.execute('SELECT * FROM people')
for row in cur.fetchall():
print(row)
# Тест программы
conn = init_db()
add_user(conn, 'Анна', 25)
add_user(conn, 'Сергей', 32)
print('--- Все пользователи ---')
list_users(conn)
conn.close()
10. Использование with-блоков для безопасности
Чтобы не забывать закрывать соединение, можно использовать with:
with sqlite3.connect('data.db') as conn:
cur = conn.cursor()
cur.execute('SELECT 1')
print('Соединение закрывается автоматически!')
11. Использование pandas для анализа
Библиотека pandas может напрямую читать SQL-таблицы!
import pandas as pd
import sqlite3conn = sqlite3.connect('users.db')
df = pd.read_sql_query('SELECT * FROM users', conn)
print(df)
Это удобно для визуализации и анализа данных в Jupyter или Google Colab.
Итоги урока
Теперь вы умеете:- Создавать и подключаться к базам данных SQLite.
- Создавать таблицы и изменять данные с помощью SQL-запросов.
- Использовать безопасные запросы с подстановками.
- Автоматически закрывать соединения с помощью with.
- Подключать SQLite к pandas для анализа данных.