Undefined variable $domain_name
Проектирование базы данных на Python для новичков Представьте, что вы решили вести список своих книг.

Проектирование базы данных на Python для новичков Представьте, что вы решили вести список своих книг.

28.08.2026

Проектирование базы данных на Python для новичков

Представьте, что вы решили вести список своих книг. Сначала вы просто записываете названия в тетрадь. Потом добавляете авторов, даты прочтения, оценки. Через год тетрадь превращается в хаос, а найти нужную книгу становится невозможно. База данных — это та же тетрадь, но умная, организованная и способная мгновенно отвечать на вопросы. В этой статье мы разберем, как спроектировать базу данных с помощью Python, даже если вы никогда раньше не сталкивались с программированием.

Что такое база данных простыми словами

База данных (БД) — это структурированное хранилище информации. Вместо хаотичных записей данные организованы в таблицы, как в Excel. Каждая таблица описывает один тип объектов: книги, читатели, заказы. Строки таблицы — это отдельные записи, а столбцы — свойства этих записей. Например, таблица «Книги» может иметь столбцы: название, автор, год издания, жанр.

Python — это язык программирования, который позволяет создавать и управлять базами данных. Он прост для изучения, но при этом достаточно мощный для решения серьезных задач. Для работы с БД в Python существует встроенный модуль sqlite3, который не требует установки дополнительных программ. Это идеальный выбор для начинающих.

Шаг 1. Определяем структуру данных

Прежде чем писать код, нужно ответить на вопрос: какую информацию мы хотим хранить и какие вопросы будем задавать к базе? Допустим, мы создаем базу данных для домашней библиотеки. Нам нужно хранить:

  • Название книги
  • Автора
  • Год издания
  • Жанр
  • Оценку (от 1 до 10)
  • Прочитана ли книга

Эти данные образуют одну таблицу. Но что если один автор написал несколько книг? Или одна книга может относиться к нескольким жанрам? Тогда нужно разбивать данные на несколько таблиц и связывать их между собой. Этот процесс называется нормализацией. Для простоты начнем с одной таблицы, а затем усложним структуру.

Шаг 2. Создаем базу данных в Python

Для работы с базой данных нам понадобится всего несколько строк кода. Вот минимальный пример создания базы данных и таблицы:

import sqlite3
conn = sqlite3.connect('library.db')
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS books (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    title TEXT NOT NULL,
    author TEXT NOT NULL,
    year INTEGER,
    genre TEXT,
    rating INTEGER,
    read_status BOOLEAN
)
''')
conn.commit()
conn.close()

Разберем этот код по строкам. sqlite3.connect создает файл базы данных (если его нет) и подключается к нему. cursor — это объект, через который мы отправляем команды базе. Внутри CREATE TABLE мы описываем структуру таблицы: каждое поле имеет имя и тип данных. INTEGER PRIMARY KEY AUTOINCREMENT означает, что каждая запись получит уникальный номер автоматически. TEXT — это текст, INTEGER — целое число, BOOLEAN — логическое значение (да/нет).

Шаг 3. Добавляем данные

Теперь, когда таблица создана, мы можем вносить в нее записи. Для этого используется команда INSERT:

cursor.execute('''
INSERT INTO books (title, author, year, genre, rating, read_status)
VALUES ('Мастер и Маргарита', 'Михаил Булгаков', 1967, 'Роман', 10, True)
''')
conn.commit()

Обратите внимание: мы не указываем поле id — оно заполнится автоматически. Значения вставляются в том же порядке, что и перечислены поля. Если вы хотите добавить несколько книг сразу, можно использовать цикл или метод executemany, который принимает список кортежей.

Шаг 4. Читаем данные из базы

Самый частый запрос — получить все данные из таблицы. Для этого используется команда SELECT:

cursor.execute('SELECT * FROM books')
rows = cursor.fetchall()
for row in rows:
    print(row)

Каждая строка будет представлена в виде кортежа (tuple) — упорядоченного набора значений. Например: (1, 'Мастер и Маргарита', 'Михаил Булгаков', 1967, 'Роман', 10, 1). Здесь True превратилось в 1, потому что база данных хранит логические значения как 0 и 1.

Можно фильтровать данные. Например, найти все книги с оценкой выше 8:

cursor.execute('SELECT title, author FROM books WHERE rating > 8')
rows = cursor.fetchall()

Оператор WHERE позволяет задавать условия отбора. Это одно из главных преимуществ базы данных перед обычным файлом.

Шаг 5. Обновляем и удаляем записи

Иногда нужно изменить данные. Например, вы перечитали книгу и хотите поставить новую оценку. Для этого используется команда UPDATE:

cursor.execute('''
UPDATE books SET rating = 9 WHERE title = 'Мастер и Маргарита'
''')
conn.commit()

Удаление происходит через команду DELETE:

cursor.execute("DELETE FROM books WHERE title = 'Ненужная книга'")
conn.commit()

Важно помнить: если не указать условие WHERE, команда применится ко всем записям. Это может привести к потере всех данных, поэтому будьте внимательны.

Шаг 6. Связываем таблицы

В реальных проектах данные редко помещаются в одну таблицу. Вернемся к примеру с библиотекой. Если мы хотим хранить информацию об авторах отдельно (например, их биографию), логично создать вторую таблицу:

CREATE TABLE authors (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    birth_year INTEGER
)

Теперь в таблице books вместо поля author мы будем хранить author_id — номер автора из таблицы authors. Это называется внешним кл