Очистить базу данных sqlite python

Удаление записей из таблицы 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 .

Источник

Очистить базу данных sqlite python

python-video-tutorials

In this tutorial, we will learn how to execute DELETE Query in Python program to delete the data of SQLite’s table.

This tutorial mainly focuses on:

  • Delete a single row of SQLite table in Python
  • Delete a multiple rows of SQLite table in Python
  • Parameterized query to delete records from SQLite table in Python
  • Delete a single column of SQLite table in Python
  • Delete multiple columns of SQLite table in Python
  • Query to delete records in bulk.
  • Delete all rows and all columns of SQLite table in Python

Our database, and table present inside the database looks like:

deleting-data-from-database-in-python-sqlite

database name: “data.db”
table name: “users”
table columns: “id“, “name“, “age“, “gender”

Note: We have four records in our database table. We will perform operations on these records.

1). Single Row – Deleting Records from Database Table in SQLite in Python

#Importing Database Library import sqlite3 # Database Connectivity try: con = sqlite3.connect("data.db") cursor = con.cursor() print("Connected to Database Successfully") #Data Deletion Process-( Single-Row ) query = "DELETE from USERS where cursor.execute(query,(3,)) con.commit() cursor.close() except: print("Database Error") #END

Output: USERS table after deletion of row:-

delete-data-in-sqlite-in-python

Explanation: I will only explain the main points or the points which are totally new for us. Because as we are working with databases, so I’m assuming that you guys are aware of core concepts of python.

  • At line 4 we have imported our sqlite3 library, because the functions we used in our program is already pre-defined in sqlite3 library.
  • At line 7 & 16 we used try: & except: method which is useful for handling sql exception.
  • At line 8 & 9 we initialized “con” variable with connect() method with our database name “data.db“. The connect() method used here is pre-defined in sqlite3 library.
  • At line 12 we initialized variable “query” with sql query for data deletion. Here “users” is the name of our table present inside our database “data.db”.
  • At line 13 cursor.execute(query) here cursor storing the database connection & execute() is the function defined in sqlite3 library. The function execute() takes two parameter one is “ sql-query ” an second is the value which is to be passed as “ id ” to delete data related to that particular “ id ” from database table.
  • At line 14 it is necessary to call commit() function after making changes to our database.
  • At line 15 it is also necessary to close() our cursor. Basically cursor acts as pointer.

2). Multiple Rows – Deleting Records from Database Table in SQLite in Python

#Importing Database Library import sqlite3 # Database Connectivity def deletion(ids): try: con = sqlite3.connect("data.db") cursor = con.cursor() print("Connected to Database Successfully") #Data Deletion Process - ( Multiple - Rows ) query = "DELETE from USERS where cursor.executemany(query,ids) con.commit() cursor.close() except: print("Database Error") ids = [(1,),(5,)] deletion(ids) #END

Output: USERS table after deletion of rows:-

deleting-multiple-rows-from-sqlite-table-in-python

Explanation: Program explanation is same as I have discussed above. Only difference is that here we have used executemany() function instead of execute() function. And also we have passed ids list in function parameter as arguments to delete multiple rows.

Important: Our table has only left with one record, so I’m going to add 5 more records in our table.

Our table after adding new records:

sqlite-table-in-python

3). Parameterized Query – Deleting Records from Database Table in SQLite in Python

#Importing Database Library import sqlite3 # Database Connectivity def deletion(ids): try: con = sqlite3.connect("data.db") cursor = con.cursor() print("Connected to Database Successfully") #Data Deletion Process - ( Parameterized - Query ) query = "DELETE from USERS where cursor.execute(query,(ids,)) con.commit() cursor.close() except: print("Database Error") deletion(4) #END

Output: USERS table after deletion of rows:-

delete-data-from-sqlite-table-in-python

Explanation: Program explanation is same as I have discussed above. Only difference is that here we have used parameterized function to pass id as arguments to delete row with respect to id.

Источник

Читайте также:  Java test failed to start
Оцените статью