Добавление записи в таблицу SQLite в Python

Добавление записи в таблицу SQLite в Python

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

Подготовка

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

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

import sqlite3

conn = sqlite3.connect('my_database.db')
cursor = conn.cursor()

Вставка одной записи

Чтобы вставить одну запись в таблицу, используйте следующий код:

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

В этом примере мы вставляем имя и возраст в таблицу users. Мы используем ? в качестве маркеров параметров, чтобы избежать SQL-инъекций.

Вставка нескольких записей

Если у вас есть множество записей для вставки, вы можете воспользоваться методом executemany():

data = [
    ('Bob', 25),
    ('Charlie', 35),
    ('David', 40)
]

cursor.executemany("INSERT INTO users (name, age) VALUES (?, ?)", data)
conn.commit()

Вставка с возвратом ID

Если вы хотите получить ID вставленной записи (предполагая, что у вас есть столбец с автоинкрементом), вы можете использовать lastrowid:

cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ('Eve', 28))
conn.commit()
print("Last inserted ID:", cursor.lastrowid)

Завершение работы

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

conn.close()

Операция UPSERT

SQLite поддерживает операцию UPSERT, которая позволяет обновлять запись, если она уже существует, или вставлять новую запись, если таковой нет. Это особенно полезно, если у вас есть уникальные ограничения на столбцы.

cursor.execute("""
INSERT INTO users (id, name, age) VALUES (1, 'Alice', 30)
ON CONFLICT(id) DO UPDATE SET name='Alice', age=30
""")

Вставка из другой таблицы

Вы можете вставлять данные в таблицу на основе выборки из другой таблицы:

cursor.execute("""
INSERT INTO users_archive SELECT * FROM users WHERE age > 60
""")

Пакетная вставка

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

conn.execute('BEGIN TRANSACTION')

# Вставьте множество данных

conn.execute('COMMIT')

Работа с BLOB данными

Если вам нужно сохранить двоичные данные, например, изображения, вы можете использовать тип данных BLOB. Для этого необходимо преобразовать ваши двоичные данные в объект bytes в Python и затем вставить их в базу данных.

Создание и использование временных таблиц

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

cursor.execute("CREATE TEMP TABLE temp_users (name TEXT, age INTEGER)")

Заключение

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

Содержание: