Data Science

Введение в SQLite 3 для Python

779
читать 2 мин.
20.11.24

Всем привет! На связи Сергей Алпатов, ваш будущий преподаватель курса Python и Data Analyst. Если вы начинающий специалист в Python и Data Analytics, то вы точно хотите разобраться в основах работы с базами данных, и в этом вам поможет эта статья.

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

В этом материале мы поговорим о работе с базой данных сброса SQLite 3. Эта база не является распространённой, потому что специфика ее использования чаще всего направлена на компактность и возможность статично хранить большое количество информации для работы приложения, или для быстрой обработки большого количества данных, которые до этого не были представлены в виде какой-либо другой базы. Но несмотря на все она является важной, поэтому ниже я расскажу, как создать базу sqlite, как установить sqlite  где ее используют, как с ней эффективно работать и приведу практические примеры.

 

Где используют SQLite 3?

Вследствие того, что эта база является файловой, мы получаем возможность использовать ее в качестве основного носителя информации для приложения, если нам не подходят другие, структурированные типы файлов. Это очень удобный формат, когда вам нужно сохранить информацию, создаваемую пользователем, или когда информация предоставляется в систему через микросервисную архитектуру.

Если рассматривать такой подход со стороны бизнес анализа: очень часто можно встретить эти базы как удобный и быстрый инструмент для сохранения и воспроизведения информации, которая была предоставлена из разных источников. Именно этот подход позволяет создать единую точку входа к информации и управлять ею с помощью заранее известных инструментов. Если вы заглянете внутрь любого погодного приложения или приложения-магазина, то с большой вероятностью найдете там файлы нашей базы. Мы очень часто использовали такие базы тогда, когда нужно было хранить даже небольшое количество информации, но нужны были решения, которые в дальнейшем можно было масштабировать без лишней суеты.

 

Что нам нужно знать для того, чтобы эффективно начать работу?

Прежде всего дадим характеристику этой базе.

Sqlite browser является базой, которая представлена в виде специального файла, который хранит информацию, которую нужно использовать пользователю. Внутри она имеет свою, уникальную структуру, которая позволяет оперировать контентом с помощью специального, уменьшенного до базовых понятий, диалекта языка SQL. Это даже и отражается в ее названии, которое означает «легкая» версия.

Для работы с этой базой нам не нужно специальное программное обеспечение, ни серверная часть, чтобы запускать эту базу и давать к ней доступ. Все функционирование строится вокруг процессов обработки обычного файла, так же как мы работаем с текстовыми файлами, только вместо чтения в систему напрямую для доступа к контенту нам понадобится создавать специальные запросы.

Сейчас данная база является основной, ее используют по умолчанию. Она является базой данных, которая имеется в стандартном пакете языка программирования Пайтон. Для работы с ней очень часто используют прямой подход. Это означает, что внутри кода нам нужно создавать запросы и передавать их в виде отдельных скриптов или строк, которые записывают контекст запроса прямо в коде, в виде переменной или сразу в специальные функции.

 

Как запустить sqlite manager? Собираем нужные инструменты

  • Для начала нам понадобится, конечно же, сам язык программирования Пайтон. Не забывайте проверять версию вашей операционной системы, чтобы все работало.
  • В идеале нам понадобится какая-то IDE, где мы сможем писать код, и редактировать его. Сейчас без подсветки кода бывает очень сложно написать даже самый простой скрипт. Моя рекомендация — PyCharm CE. Будет очень круто, если у вас есть профессиональная версия. Она позволяет более эффективно работать с базами данных, поскольку имеет подсветку синтаксиса и встроенные инструменты, с помощью которых можно просматривать структуру базы. Но она не бесплатная, поэтому специально для этой задачи лучше ее не покупать, потому что у нас есть альтернативы, которые помогут работать также эффективно.
  • Для того, чтобы просматривать структуру базы и видеть таблицы с информацией, нам понадобится программа, которая может открывать данный тип файлов. Я пользуюсь DB Browser for SQLite. Она бесплатная и имеет даже избыточный функционал, как для наших задач.

 

Начало работы

Когда все программное обеспечение уже установлено наступает время писать код. Поэтому давайте разберем основные свойства и правила, по которым можно создать свою первую программу, которая использует SQLite3.

Работа с sqlite3 охватывает несколько основных этапов: подключение к базе данных, создание таблиц, вставку, выборку и обновление данных. Вот несколько основных методологий для работы с sqlite3 и данными:

  1. Подключение к базе данных: для работы с базой данных sqlite используется sqlite3.connect(). Этот метод создает объект соединения, который нужно использовать для взаимодействия с базой данных.

import sqlite3

conn = sqlite3.connect(‘mydatabase.db’)

 

2. Создание таблиц: определите схему базы данных, а затем используйте CREATE TABLE для создания таблиц.

cursor = conn.cursor()
cursor.execute(»’CREATE TABLE IF NOT EXISTS users
(id INTEGER PRIMARY KEY, name TEXT, age INTEGER)»’)
conn.commit()

 

3. Вставка данных: используйте INSERT INTO для добавления новых записей в таблицу.

cursor.execute(«INSERT INTO users (name, age) VALUES (?, ?)», (‘John’, 25))
conn.commit()

Здесь в коде приведены специальные символы — вопросительные знаки. Они используются для того, чтобы мы могли использовать переменные для передачи информации в базу или для того, чтобы сделать код более безопасным. Более подробно сможете узнать об этом в конце статьи.

 

  1. Выборка данных: используйте SELECT для получения данных из таблицы.

cursor.execute(«SELECT * FROM users»)
rows = cursor.fetchall()

for row in rows:
print(row)

 

2. Обновление данных: используйте UPDATE для изменения существующих записей.

cursor.execute(«UPDATE users SET age = ? WHERE name = ?», (30, ‘John’))
conn.commit()

 

3. Удаление данных: используйте DELETE для удаления записей из таблицы.

cursor.execute(«DELETE FROM users WHERE name = ‘John'»)
conn.commit()

 

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

conn.close()

 

Это базовые методологии для работы с sqlite3 в Python. Обратите внимание, что для безопасного использования следует применять параметризованные запросы (с помощью знака вопроса и кортежа значений), чтобы избежать SQL-инъекций.

Для использования параметризованных запросов в Python с библиотекой sqlite3, можно применять плейсхолдеры в виде знака вопроса (?). Они указывают место в запросе, где будут вставлены безопасные значения. Такой подход помогает избежать SQL-инъекций, поскольку значения обрабатываются библиотекой перед вставкой в SQL-запрос.

 

Вот базовый пример работы с параметризованными запросами в sqlite3:

import sqlite3

# Підключення до бази даних (або створення нової, якщо вона не існує)
conn = sqlite3.connect(‘example.db’)
cursor = conn.cursor()

# Створення таблиці
cursor.execute(»’
CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)
»’)

# Додавання даних до таблиці за допомогою параметризованого запиту
name = ‘John’
age = 30
cursor.execute(‘INSERT INTO users (name, age) VALUES (?, ?)’, (name, age))

# Вибірка даних з параметризацією
user_id = 1
cursor.execute(‘SELECT * FROM users WHERE id=?’, (user_id,))
print(cursor.fetchone())

# Завершення транзакції і закриття підключення
conn.commit()
conn.close()

 

В этом примере:

  • При создании и модификации таблицы users мы используем параметризованные запросы для вставки и выборки данных.
  • Вместо того, чтобы вставлять переменные непосредственно в SQL-запрос, используются плейсхолдеры (?), и соответствующие значения передаются в виде кортежа как второй аргумент метода execute().
  • Это обеспечивает безопасность и помогает избежать потенциальных уязвимостей связанных с SQL-инъекцией.

Но это только начало. Существует еще несколько вариантов, как можно работать с этой базой в среде Пайтон. Если вы хотите узнать об этом больше, приходите на курс Python. Я не только помогу вам досконально освоить сам язык запросов SQL, но еще и познакомлю с одним из самых актуальных форматов использования баз внутри кода Пайтон — ORM. На наших занятиях все обучение базируется на реальных кейсах и практике, поэтому после курса вы сможете успешно трудоустроиться или улучшить уже имеющиеся навыки и перейти в более крутую компанию!