Как работать с SQLite в питоне практические советы

онлайн тренажер по питону
Онлайн-тренажер Python 3 для начинающих

Теория без воды. Задачи с автоматической проверкой. Подсказки на русском языке. Работает в любом современном браузере.

начать бесплатно

Введение

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


Что такое SQLite?

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

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

  • Встроена в Python (модуль sqlite3)

  • Не требует конфигурации

  • Высокая производительность для небольших и средних проектов

  • Простота использования


Зачем использовать SQLite в Python?

Ключевые причины:

  • Для учебных и учебно-практических проектов

  • Для локальных приложений и скриптов

  • Для небольших веб-приложений (например, с Flask)

  • Как база для хранения конфигураций или данных в оффлайн-программах


Установка и импорт SQLite в Python

SQLite встроен в стандартную библиотеку Python, поэтому ничего устанавливать не нужно. Просто импортируйте модуль:

python
import sqlite3

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

Подключение к файлу базы данных

python
conn = sqlite3.connect('example.db') # Создаст файл, если его нет

Подключение к базе данных в памяти

python
conn = sqlite3.connect(':memory:') # Временная база, хранится в оперативной памяти

Создание таблицы в SQLite

python
cursor = conn.cursor() cursor.execute(''' CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, age INTEGER ) ''') conn.commit()

Вставка данных в таблицу SQLite

Один элемент:

python
cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("Alice", 25)) conn.commit()

Множественная вставка:

python
users = [("Bob", 30), ("Charlie", 22), ("Diana", 28)] cursor.executemany("INSERT INTO users (name, age) VALUES (?, ?)", users) conn.commit()

Чтение данных из SQLite

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

Использование словаря вместо кортежа

python
conn.row_factory = sqlite3.Row cursor = conn.cursor() cursor.execute("SELECT * FROM users") rows = cursor.fetchall() for row in rows: print(dict(row))

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

python
cursor.execute("UPDATE users SET age = ? WHERE name = ?", (26, "Alice")) conn.commit()

Удаление данных

python
cursor.execute("DELETE FROM users WHERE name = ?", ("Charlie",)) conn.commit()

Закрытие соединения

python
conn.close()

Как безопасно использовать SQLite: Лучшие практики

  1. Используйте плейсхолдеры (?) вместо форматирования строк. Это защищает от SQL-инъекций.

  2. Закрывайте соединение. Или используйте контекстный менеджер:

    python
    with sqlite3.connect('example.db') as conn: ...
  3. Используйте транзакции. Автоматически делается с commit(), но можно использовать conn.isolation_level для более гибкого контроля.

  4. Обрабатывайте ошибки: Используйте блоки try/except для перехвата исключений.


Пример: Полная программа на Python с SQLite

python
import sqlite3 def init_db(): with sqlite3.connect('example.db') as conn: cursor = conn.cursor() cursor.execute(''' CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER ) ''') conn.commit() def add_user(name, age): with sqlite3.connect('example.db') as conn: cursor = conn.cursor() cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", (name, age)) conn.commit() def get_users(): with sqlite3.connect('example.db') as conn: conn.row_factory = sqlite3.Row cursor = conn.cursor() cursor.execute("SELECT * FROM users") return cursor.fetchall() # Инициализация и работа init_db() add_user("Екатерина", 29) add_user("Иван", 34) for user in get_users(): print(dict(user))

Когда не стоит использовать SQLite?

  • При большом количестве параллельных записей

  • Для масштабируемых веб-приложений

  • Когда требуется шифрование, репликация, масштабирование

Для этих целей лучше использовать PostgreSQL, MySQL, MariaDB и др.


Альтернативы SQLite в Python

База данных Особенности
PostgreSQL Надежная, с продвинутыми функциями
MySQL Быстрая и популярная в вебе
MongoDB Документо-ориентированная NoSQL база
TinyDB / Shelve Для микропроектов без SQL

Новости