Как удалить строку в sqlite
Перейти к содержимому

Как удалить строку в sqlite

Как удалить строку в sqlite

Команда DELETE удаляет данные из БД. Она имеет следующий формальный синтаксис:

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

Удалим из этой таблицы товары, у которых производитель — Huawei:

Команда DELETE в SQLite

Или удалим все товары, производителем которых является Apple и которые имеют цену меньше 60000:

Если необходимо вовсе удалить все строки вне зависимости от условия, то условие можно не указывать:

Удаление строки sqlite3

У меня есть таблица и две функции — для записи и удаление строки. Последняя не работает. Как её починить?

user avatar

В качестве параметров ожидается кортеж, поэтому замените:

PS следующая команда поможет разобраться:

user avatar

Всё ещё ищете ответ? Посмотрите другие вопросы с метками python sql python-3.x sqlite3 или задайте свой вопрос.

Site design / logo © 2022 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2022.6.10.42345

Нажимая «Принять все файлы cookie», вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Удаление записей из таблицы SQLite

Этот материал посвящен выполнению SQL-операции DELETE для SQLite-таблицы из Python-приложения.

В этой статье мы рассмотрим:

  • Удаление одной, нескольких или всех строк или колонок из SQLite-таблицы с помощью Python;
  • Использование запроса с параметрами для выполнения операции удаления из SQLite;
  • Коммит и отмена последней операции;
  • Массовое удаление в один запрос.

Подготовка

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

Пример удаления одной строки из SQLite-таблицы

Сейчас таблица sqlitedb_developers содержит шесть строк, а удалять будем разработчика, чей id равен 6. Вот что для этого нужно сделать:

  • Присоединиться к SQLite из Python;
  • Создать объект Cursor с помощью полученного в прошлом шаге объекта соединения SQLite;
  • Создать DELETE-запрос для SQLite. Именно на этом этапе нужно знать названия таблицы и колонок;
  • Выполнить DELETE-запрос с помощью cursor.execute() ;
  • После выполнения запроса необходимо закоммитить изменения в базу данных;
  • Закрыть соединение с базой данных;
  • Также важно не забыть перехватить исключения, которые могут возникнуть;
  • Наконец, проверить результат операции.

Вывод: таблица sqlitedb_developers после удаления строки из Python.

Разбор примера в подробностях

  • На этой строке модуль sqlite3 импортируется в программу;
  • С помощью классов и методов sqlite3 можно взаимодействовать с базой данных SQLite.

sqlite3.connect() и connection.cursor() :

  • С помощью sqlite3.connect() устанавливается соединение с базой данных SQLite из Python;
  • Дальше используется sqliteConnection.cursor() для получения объекта Cursor .

После этого создается DELETE-запрос для удаления шестой строки в таблице (для разработчика с id равным 6). В запросе этот разработчик упоминается.

  • Выполняется операция из DELETE-запроса с помощью метода execute() объекта Cursor ;
  • После успешного удаления записи изменения коммитятся в базу данных с помощью connection.commit() .

Наконец, закрываются Cursor и SQLite-соединение в блоке finally .

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

Использование переменных в запросах для удаления строки

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

В таких случаях требуется использовать запрос с параметрами. В таких запросах на месте будущих значений ставятся заполнители ( ? ). Это помогает удалять записи, получая значения во время работы программы, и избегать проблем SQL-инъекций. Вот пример с удалением разработчика с id=5 .

Вывод: таблица sqlitedb_developers после удаления строки с помощью запроса с параметрами.

Разберем последний пример:

  • Запрос с параметрами использовался, чтобы получить id разработчика во время работы программы и подставить его на место ? . Он определяет id записи, которая будет удалена.
  • После этого создается кортеж данных с помощью переменных Python.
  • Дальше DELETE-запрос вместе с данными передается в метод cursor.execute() .
  • Наконец, изменения сохраняются в базе данных с помощью метода commit() класса Connection .

Операция Delete для удаления нескольких строк

В примере выше был использован метод execute() объекта Cursor для удаления одной записи, но часто приходится удалять сразу несколько одновременно.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *