Python and SQLite - Deleting Data
In order to delete data in an SQLite database, the SQL ‘Delete’ statement needs to be used. The following example deletes a record with a specific ‘id’ from the ‘person’ table, which was used in the examples for selecting, inserting and updating data.
Deleting data works in a similar way to the other examples, where a parameterised query is used. Firstly, a check is made to see if the database file actually exists. If it doesn’t, a message is displayed and execution of the program is halted. If successfully found, a connection to the database is established, then the query parameter for the ‘id’ of the record to be deleted is defined as a variable, which is bound in to the following SQL statement when it is executed and a confirmation message is displayed. The execution of the SQL statement is wrapped in a ‘try-except-finally’ block to catch any errors that may arise and close the database connection at the end.
import os.path import sqlite3 # Database. database = 'testDB.db' connect = None # Check if database file exists. if not os.path.isfile(database): # Confirm incorrect database location and stop program execution. print("Error locating database.") quit() try: # Connect to database. connect = sqlite3.connect(database) except sqlite3.DatabaseError as e: # Confirm unsuccessful connection and quit. print("Database connection unsuccessful.") quit() # Cursor to execute query. cursor = connect.cursor() # Query parameter. id = 2 # SQL to delete data in the person table. sqlDelete = \ "DELETE FROM person \ WHERE id = ?" try: # Execute query and commit changes. cursor.execute(sqlDelete, (id,)) connect.commit() # Confirm successful deletion of person information. print("Person information deleted successfully.") except sqlite3.DatabaseError as e: # Confirm error deleting person information and stop program execution. print("Error deleting person information.") quit() finally: # Close database connection. connect.close()
The contents of the ‘person’ table now looks as follows.
id | firstname | lastname | title | dob |
1 | Bob | Smith | Mr | 1980-01-20 |
3 | Fred | Bloggs | Mr | 1975-05-07 |
4 | Alan | White | Mr | 1989-03-20 |
5 | Fiona | Bloggs | Mrs | 1985-05-19 |