Python sqlite3 delete all

Python SQLite — Delete Data

To delete records from a SQLite table, you need to use the DELETE FROM statement. To remove specific records, you need to use WHERE clause along with it.

To update specific rows, you need to use the WHERE clause along with it.

Syntax

Following is the syntax of the DELETE query in SQLite −

DELETE FROM table_name [WHERE Clause]

Example

Assume we have created a table with name CRICKETERS using the following query −

sqlite> CREATE TABLE CRICKETERS ( First_Name VARCHAR(255), Last_Name VARCHAR(255), Age int, Place_Of_Birth VARCHAR(255), Country VARCHAR(255) ); sqlite>

And if we have inserted 5 records in to it using INSERT statements as −

sqlite> insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India'); sqlite> insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica'); sqlite> insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka'); sqlite> insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India'); sqlite> insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India'); sqlite>

Following statement deletes the record of the cricketer whose last name is ‘Sangakkara’.

sqlite> DELETE FROM CRICKETERS WHERE LAST_NAME = 'Sangakkara'; sqlite>

If you retrieve the contents of the table using the SELECT statement, you can see only 4 records since we have deleted one.

sqlite> SELECT * FROM CRICKETERS; First_Name Last_Name Age Place_Of_B Country ---------- ---------- ---- ---------- ------------- Shikhar Dhawan 46 Delhi India Jonathan Trott 39 CapeTown SouthAfrica Virat Kohli 31 Delhi India Rohit Sharma 33 Nagpur India sqlite>

If you execute the DELETE FROM statement without the WHERE clause, all the records from the specified table will be deleted.

sqlite> DELETE FROM CRICKETERS; sqlite>

Since you have deleted all the records, if you try to retrieve the contents of the CRICKETERS table, using SELECT statement you will get an empty result set as shown below −

sqlite> SELECT * FROM CRICKETERS; sqlite>

Deleting data using python

To add records to an existing table in SQLite database −

  • Import sqlite3 package.
  • Create a connection object using the connect() method by passing the name of the database as a parameter to it.
  • The cursor() method returns a cursor object using which you can communicate with SQLite3 . Create a cursor object by invoking the cursor() object on the (above created) Connection object.
  • Then, invoke the execute() method on the cursor object, by passing an DELETE statement as a parameter to it.
Читайте также:  Операторы php приоритет операторов

Example

Following python example deletes the records from EMPLOYEE table with age value greater than 25.

import sqlite3 #Connecting to sqlite conn = sqlite3.connect('example.db') #Creating a cursor object using the cursor() method cursor = conn.cursor() #Retrieving contents of the table print("Contents of the table: ") cursor.execute('''SELECT * from EMPLOYEE''') print(cursor.fetchall()) #Deleting records cursor.execute('''DELETE FROM EMPLOYEE WHERE AGE > 25''') #Retrieving data after delete print("Contents of the table after delete operation ") cursor.execute("SELECT * from EMPLOYEE") print(cursor.fetchall()) #Commit your changes in the database conn.commit() #Closing the connection conn.close()

Output

Contents of the table: [('Ramya', 'Rama priya', 27, 'F', 9000.0), ('Vinay', 'Battacharya', 21, 'M', 6000.0), ('Sharukh', 'Sheik', 26, 'M', 8300.0), ('Sarmista', 'Sharma', 26, 'F', 10000.0), ('Tripthi', 'Mishra', 24, 'F', 6000.0)] Contents of the table after delete operation [('Vinay', 'Battacharya', 21, 'M', 6000.0), ('Tripthi', 'Mishra', 24, 'F', 6000.0)]

Источник

Удаление записей из таблицы 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() ;
  • После выполнения запроса необходимо закоммитить изменения в базу данных;
  • Закрыть соединение с базой данных;
  • Также важно не забыть перехватить исключения, которые могут возникнуть;
  • Наконец, проверить результат операции.
 
import sqlite3

def delete_record():
try:
sqlite_connection = sqlite3.connect('sqlite_python.db')
cursor = sqlite_connection.cursor()
print("Подключен к SQLite")

sql_delete_query = """DELETE from sqlitedb_developers where /> cursor.execute(sql_delete_query)
sqlite_connection.commit()
print("Запись успешно удалена")
cursor.close()

except sqlite3.Error as error:
print("Ошибка при работе с SQLite", error)
finally:
if sqlite_connection:
sqlite_connection.close()
print("Соединение с SQLite закрыто")

delete_record()

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

Подключен к SQLite Запись успешно удалена Соединение с SQLite закрыто

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

  • На этой строке модуль 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 .

 
import sqlite3

def delete_sqlite_record(dev_id):
try:
sqlite_connection = sqlite3.connect('sqlite_python.db')
cursor = sqlite_connection.cursor()
print("Подключен к SQLite")

sql_update_query = """DELETE from sqlitedb_developers where /> cursor.execute(sql_update_query, (dev_id, ))
sqlite_connection.commit()
print("Запись успешно удалена")
cursor.close()

except sqlite3.Error as error:
print("Ошибка при работе с SQLite", error)
finally:
if sqlite_connection:
sqlite_connection.close()
print("Соединение с SQLite закрыто")

delete_sqlite_record(5)

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

Подключен к SQLite Запись успешно удалена Соединение с SQLite закрыто

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

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

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

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

Вместо выполнения запроса DELETE каждый раз для каждой записи, можно выполнить операцию массового удаления в одном запросе. Удалить несколько записей из SQLite-таблицы в один запрос можно с помощью метода cursor.executemany() .

Метод cursor.executemany(query, seq_param) принимает два аргумента: SQL-запрос и список записей для удаления.

Посмотрим на следующий пример. В нем удаляются сразу три разработчика.

 
import sqlite3

def delete_multiple_records(ids_list):
try:
sqlite_connection = sqlite3.connect('sqlite_python.db')
cursor = sqlite_connection.cursor()
print("Подключен к SQLite")

sqlite_update_query = """DELETE from sqlitedb_developers where /> cursor.executemany(sqlite_update_query, ids_list)
sqlite_connection.commit()
print("Удалено записей:", cursor.rowcount)
sqlite_connection.commit()
cursor.close()

except sqlite3.Error as error:
print("Ошибка при работе с SQLite", error)
finally:
if sqlite_connection:
sqlite_connection.close()
print("Соединение с SQLite закрыто")

ids_to_delete = [(4,),(3,)]
delete_multiple_records(ids_to_delete)
Подключен к SQLite далено записей: 2 Соединение с SQLite закрыто

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

  • После соединения с базой данных SQLite готовится SQL-запрос с параметрами и одним заполнителем. Вместе с ним также передается список id в формате кортежа.
  • Каждый элемент списка — это всего лишь кортеж каждой строки. Каждый кортеж содержит id разработчика. В этом примере три кортежа — то есть, три разработчика.
  • Дальше вызывается cursor.executemany(sqlite_delete_query, ids_list) для удаления нескольких записей из таблицы. И запрос, и список id передаются cursor.executemany() в качестве аргументов.
  • Чтобы увидеть количество затронутых записей, можно использовать метод cursor.rowcount . Наконец, изменения сохраняются в базу данных с помощью метода commit класса Connection .

Источник

Оцените статью