Python и SQLite3

Основы работы с базами данных в Python и SQLite

SQLite — это встраиваемая СУБД, которая хранит всю базу данных в одном файле. Благодаря модулю sqlite3, который включен в стандартную библиотеку Python, работа становится простой и удобной.

Преимущества SQLite

  1. Встраиваемость: SQLite представляет собой небольшую библиотеку C, которая может быть встроена непосредственно в приложение. Это делает его отличным выбором для мобильных приложений, настольных приложений или даже в некоторых веб-приложениях.
  2. Файловая структура: Вся база данных SQLite хранится в одном файле. Это упрощает резервное копирование, передачу и управление данными.
  3. Без сервера: В отличие от многих других СУБД, таких как PostgreSQL или MySQL, SQLite не использует сервер. Вместо этого она работает напрямую с файлом данных.
  4. Транзакции: SQLite поддерживает полные транзакции на основе ACID, что обеспечивает надежность данных.
  5. Гибкость типов данных: SQLite использует динамическую систему типов, что позволяет хранить любой тип данных в любом столбце.

Особенности SQLite по сравнению с другими СУБД

  • Легковесность: SQLite требует минимальной конфигурации и настройки. Это делает его простым в использовании, особенно для новичков или для приложений, которые не требуют сложных возможностей СУБД.
  • Портативность: Из-за своей файловой структуры базы данных SQLite легко переносить между системами.
  • Ограничения производительности: Несмотря на то что SQLite отлично подходит для многих задач, он может не соответствовать требованиям приложений с высокой нагрузкой или большим количеством одновременных запросов.
  • Ограниченная параллельность: SQLite не предназначена для работы с многопользовательскими системами с высокой степенью параллельных операций.
  • Расширенные возможности: В отличие от некоторых других СУБД, таких как PostgreSQL или MySQL, SQLite может не иметь некоторых продвинутых функций. Однако для многих приложений базового и среднего уровня это может быть и не требуется.

Модуль sqlite3 в Python

Модуль sqlite3 предоставляет интерфейс для работы с базами данных SQLite. Основные объекты и методы, которые вам стоит знать:

  • sqlite3.connect(database, ...): Этот метод используется для установления соединения с базой данных SQLite. Если файл базы данных не существует, он будет автоматически создан.
  • conn.cursor(): После установления соединения с базой данных (где conn является объектом соединения) вы можете создать объект курсора, который будет использоваться для выполнения SQL-запросов к базе данных и извлечения результатов.
  • cursor.execute(sql, ...): Этот метод используется для выполнения SQL-запросов, таких как SELECT, INSERT, UPDATE и DELETE.
  • cursor.fetchall(): После выполнения SELECT-запроса вы можете использовать этот метод, чтобы извлечь все строки результата.
  • conn.commit(): Если вы вносите какие-либо изменения в базу данных (например, вставляете, обновляете или удаляете строки), то эти изменения не будут сохранены до тех пор, пока вы не вызовете этот метод.
  • conn.close(): После завершения работы с базой данных всегда рекомендуется закрывать соединение с помощью этого метода.

Создание и подключение к базе данных SQLite

Создать или подключиться к базе данных можно с помощью функции connect():

import sqlite3

# Создание (или подключение) к файлу базы данных
conn = sqlite3.connect('my_database.db')

# Создание объекта курсора
cursor = conn.cursor()

Выполнение базовых SQL-запросов через Python

Работая с SQLite в Python, вы будете использовать стандартные SQL-запросы. Давайте рассмотрим подробнее основные операции CRUD (создание, чтение, обновление, удаление) с примерами на Python.

Создание данных (INSERT)

Одиночная вставка:

cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("Elena", 28))

Чтение данных (SELECT)

Выбрать все записи:

cursor.execute("SELECT * FROM users")
all_rows = cursor.fetchall()
for row in all_rows:
    print(row)

Выбрать определенные записи с условием:

cursor.execute("SELECT * FROM users WHERE age > ?", (30,))
rows = cursor.fetchall()
for row in rows:
    print(row)

Выбрать определенные столбцы:

cursor.execute("SELECT name FROM users")
names = cursor.fetchall()
for name in names:
    print(name[0])

Обновление данных (UPDATE)

Обновление записи:

cursor.execute("UPDATE users SET age = ? WHERE name = ?", (32, "Elena"))

Обновление нескольких записей:

cursor.execute("UPDATE users SET age = age + 1 WHERE age < ?", (30,))

Удаление данных (DELETE)

Удаление конкретной записи:

cursor.execute("DELETE FROM users WHERE name = ?", ("John",))

Удаление записей по условию:

cursor.execute("DELETE FROM users WHERE age < ?", (25,))

Подтверждение изменений и закрытие

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

conn.commit()

После завершения всех операций закройте соединение:

conn.close()

Заключение

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

Содержание: