Python sqlite3 очистить таблицу

SQLite Python: Deleting Data

Summary: this tutorial shows you how to delete data in the SQLite database from a Python program using the sqlite3 module.

In order to delete data in the SQLite database from a Python program, you use the following steps:

  1. First, establish a connection the SQLite database by creating a Connection object using the connect() function.
  2. Second, to execute a DELETE statement, you need to create a Cursor object using the cursor() method of the Connection object.
  3. Third, execute the DELETE statement using the execute() method of the Cursor object. In case you want to pass the arguments to the statement, you use a question mark ( ? ) for each argument.

The following create_connection() function establishes a database connection to an SQLite database specified by a database file name:

def create_connection(db_file): """ create a database connection to the SQLite database specified by the db_file :param db_file: database file :return: Connection object or None """ conn = None try: conn = sqlite3.connect(db_file) except Error as e: print(e) return connCode language: Python (python)

The following delete_task() function deletes a task in the tasks table by id.

def delete_task(conn, id): """ Delete a task by task id :param conn: Connection to the SQLite database :param id: id of the task :return: """ sql = 'DELETE FROM tasks WHERE cur = conn.cursor() cur.execute(sql, (id,)) conn.commit()Code language: Python (python)

The following delete_all_tasks() function deletes all rows in the tasks table.

def delete_all_tasks(conn): """ Delete all rows in the tasks table :param conn: Connection to the SQLite database :return: """ sql = 'DELETE FROM tasks' cur = conn.cursor() cur.execute(sql) conn.commit()Code language: Python (python)

This main() function calls the create_connection() function and the delete_task() function to delete the task with id 2 from the tasks table:

def main(): database = r"C:\sqlite\db\pythonsqlite.db" # create a database connection conn = create_connection(database) with conn: delete_task(conn, 2); # delete_all_tasks(conn); if __name__ == '__main__': main()Code language: Python (python)
import sqlite3 from sqlite3 import Error def create_connection(db_file): """ create a database connection to the SQLite database specified by the db_file :param db_file: database file :return: Connection object or None """ conn = None try: conn = sqlite3.connect(db_file) except Error as e: print(e) return conn def delete_task(conn, id): """ Delete a task by task id :param conn: Connection to the SQLite database :param id: id of the task :return: """ sql = 'DELETE FROM tasks WHERE cur = conn.cursor() cur.execute(sql, (id,)) conn.commit() def delete_all_tasks(conn): """ Delete all rows in the tasks table :param conn: Connection to the SQLite database :return: """ sql = 'DELETE FROM tasks' cur = conn.cursor() cur.execute(sql) conn.commit() def main(): database = r"C:\sqlite\db\pythonsqlite.db" # create a database connection conn = create_connection(database) with conn: delete_task(conn, 2); # delete_all_tasks(conn); if __name__ == '__main__': main()Code language: Python (python)

Note that you can comment/ un-comment the function call in the main() function to test each delete function individually.

In this tutorial, you have learned how to delete data in the SQLite database from a Python program using the sqlite3 module.

Источник

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

Источник

Python SQLite - Drop Table

You can remove an entire table using the DROP TABLE statement. You just need to specify the name of the table you need to delete.

Syntax

Following is the syntax of the DROP TABLE statement in PostgreSQL −

Example

Assume we have created two tables with name CRICKETERS and EMPLOYEES using the following queries −

sqlite> CREATE TABLE CRICKETERS ( First_Name VARCHAR(255), Last_Name VARCHAR(255), Age int, Place_Of_Birth VARCHAR(255), Country VARCHAR(255) ); sqlite> CREATE TABLE EMPLOYEE( FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, SEX CHAR(1), INCOME FLOAT ); sqlite>

Now if you verify the list of tables using the .tables command, you can see the above created tables in it ( list) as −

sqlite> .tables CRICKETERS EMPLOYEE sqlite>

Following statement deletes the table named Employee from the database −

sqlite> DROP table employee; sqlite>

Since you have deleted the Employee table, if you retrieve the list of tables again, you can observe only one table in it.

sqlite> .tables CRICKETERS sqlite>

If you try to delete the Employee table again, since you have already deleted it you will get an error saying “no such table” as shown below −

sqlite> DROP table employee; Error: no such table: employee sqlite>

To resolve this, you can use the IF EXISTS clause along with the DELTE statement. This removes the table if it exists else skips the DLETE operation.

sqlite> DROP table IF EXISTS employee; sqlite>

Dropping a table using Python

You can drop a table whenever you need to, using the DROP statement of MYSQL, but you need to be very careful while deleting any existing table because the data lost will not be recovered after deleting a table.

Example

To drop a table from a SQLite3 database using python invoke the execute() method on the cursor object and pass the drop statement as a parameter to it.

import sqlite3 #Connecting to sqlite conn = sqlite3.connect('example.db') #Creating a cursor object using the cursor() method cursor = conn.cursor() #Doping EMPLOYEE table if already exists cursor.execute("DROP TABLE emp") print("Table dropped. ") #Commit your changes in the database conn.commit() #Closing the connection conn.close()

Источник

Читайте также:  Шаблон регулярного выражения java
Оцените статью