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 sqlite3

def 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 sqlite3

conn = sqlite3.connect('users.db') df = pd.read_sql_query('SELECT * FROM users', conn) print(df)

Это удобно для визуализации и анализа данных в Jupyter или Google Colab.

Итоги урока

Теперь вы умеете:
  • Создавать и подключаться к базам данных SQLite.
  • Создавать таблицы и изменять данные с помощью SQL-запросов.
  • Использовать безопасные запросы с подстановками.
  • Автоматически закрывать соединения с помощью with.
  • Подключать SQLite к pandas для анализа данных.