Как удалить строку в sqlite
Команда DELETE удаляет данные из БД. Она имеет следующий формальный синтаксис:
Например, возьмем следующую таблицу products, которая хранит некоторый набор товаров:
Удалим из этой таблицы товары, у которых производитель — Huawei:

Или удалим все товары, производителем которых является Apple и которые имеют цену меньше 60000:
Если необходимо вовсе удалить все строки вне зависимости от условия, то условие можно не указывать:
Удаление строки sqlite3
У меня есть таблица и две функции — для записи и удаление строки. Последняя не работает. Как её починить?
![]()
В качестве параметров ожидается кортеж, поэтому замените:
PS следующая команда поможет разобраться:
![]()
Всё ещё ищете ответ? Посмотрите другие вопросы с метками 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 для удаления одной записи, но часто приходится удалять сразу несколько одновременно.