Open In App

SQL using Python

In this article, integrating SQLite3 with Python is discussed. Here we will discuss all the CRUD operations on the SQLite3 database using Python. CRUD contains four major operations – 



Note: This needs a basic understanding of SQL

Here, we are going to connect SQLite with Python. Python has a native library for SQLite3 called sqlite3. Let us explain how it works. 



Connecting to SQLite Database

import sqlite3
sqliteConnection = sqlite3.connect('gfg.db')
cursor = sqliteConnection.cursor()

Example: Connecting to SQLite3 database using Python




import sqlite3
 
# connecting to the database
connection = sqlite3.connect("gfg.db")
 
# cursor
crsr = connection.cursor()
 
# print statement will execute if there
# are no errors
print("Connected to the database")
 
# close the connection
connection.close()

Output:

Connected to the database

Cursor Object

Before moving further to SQLite3 and Python let’s discuss the cursor object in brief. 

Executing SQLite3 Queries – Creating Tables

After connecting to the database and creating the cursor object let’s see how to execute the queries.

Example: Creating SQLite3 tables using Python

In this example, we will create the SQLite3 tables using Python. The standard SQL command will be used for creating the tables.




import sqlite3
 
# connecting to the database
connection = sqlite3.connect("gfg.db")
 
# cursor
crsr = connection.cursor()
 
# SQL command to create a table in the database
sql_command = """CREATE TABLE emp (
staff_number INTEGER PRIMARY KEY,
fname VARCHAR(20),
lname VARCHAR(30),
gender CHAR(1),
joining DATE);"""
 
# execute the statement
crsr.execute(sql_command)
 
# close the connection
connection.close()

Output:

Inserting into Table

To insert data into the table we will again write the SQL command as a string and will use the execute() method.

Example 1: Inserting Data into SQLite3 table using Python




# Python code to demonstrate table creation and
# insertions with SQL
 
# importing module
import sqlite3
 
# connecting to the database
connection = sqlite3.connect("gfg.db")
 
# cursor
crsr = connection.cursor()
 
# SQL command to insert the data in the table
sql_command = """INSERT INTO emp VALUES (23, "Rishabh",\
"Bansal", "M", "2014-03-28");"""
crsr.execute(sql_command)
 
# another SQL command to insert the data in the table
sql_command = """INSERT INTO emp VALUES (1, "Bill", "Gates",\
"M", "1980-10-28");"""
crsr.execute(sql_command)
 
# To save the changes in the files. Never skip this.
# If we skip this, nothing will be saved in the database.
connection.commit()
 
# close the connection
connection.close()

Output:

Example 2: Inserting data input by the user




# importing module
import sqlite3
 
# connecting to the database
connection = sqlite3.connect("gfg.db")
 
# cursor
crsr = connection.cursor()
 
# primary key
pk = [2, 3, 4, 5, 6]
 
# Enter 5 students first names
f_name = ['Nikhil', 'Nisha', 'Abhinav', 'Raju', 'Anshul']
 
# Enter 5 students last names
l_name = ['Aggarwal', 'Rawat', 'Tomar', 'Kumar', 'Aggarwal']
 
# Enter their gender respectively
gender = ['M', 'F', 'M', 'M', 'F']
 
# Enter their joining data respectively
date = ['2019-08-24', '2020-01-01', '2018-05-14', '2015-02-02', '2018-05-14']
 
for i in range(5):
 
    # This is the q-mark style:
    crsr.execute('INSERT INTO emp VALUES ({pk[i]}, "{f_name[i]}", "{l_name[i]}", "{gender[i]}", "{date[i]}")')
 
# To save the changes in the files. Never skip this.
# If we skip this, nothing will be saved in the database.
connection.commit()
 
# close the connection
connection.close()

Output:

Fetching Data

In this section, we have discussed how to create a table and how to add new rows in the database. Fetching the data from records is simple as inserting them. The execute method uses the SQL command of getting all the data from the table using “Select * from table_name” and all the table data can be fetched in an object in the form of a list of lists.

Example: Reading Data from sqlite3 table using Python




# importing the module
import sqlite3
 
# connect with the myTable database
connection = sqlite3.connect("gfg.db")
 
# cursor object
crsr = connection.cursor()
 
# execute the command to fetch all the data from the table emp
crsr.execute("SELECT * FROM emp")
 
# store all the fetched data in the ans variable
ans = crsr.fetchall()
 
# Since we have already selected all the data entries
# using the "SELECT *" SQL command and stored them in
# the ans variable, all we need to do now is to print
# out the ans variable
for i in ans:
    print(i)

Output:

Note: It should be noted that the database file that will be created will be in the same folder as that of the python file. If we wish to change the path of the file, change the path while opening the file.

Updating Data

For updating the data in the SQLite3 table we will use the UPDATE statement. We can update single columns as well as multiple columns using the UPDATE statement as per our requirement.

UPDATE table_name SET column1 = value1, column2 = value2,…  
WHERE condition; 

In the above syntax, the SET statement is used to set new values to the particular column, and the WHERE clause is used to select the rows for which the columns are needed to be updated. 

Example: Updating SQLite3 table using Python




# Import module
import sqlite3
 
# Connecting to sqlite
conn = sqlite3.connect('gfg.db')
 
# Creating a cursor object using
# the cursor() method
cursor = conn.cursor()
 
# Updating
cursor.execute('''UPDATE emp SET lname = "Jyoti" WHERE fname="Rishabh";''')
 
# Commit your changes in the database
conn.commit()
 
# Closing the connection
conn.close()

Output:

Deleting Data

For deleting the data from the SQLite3 table we can use the delete command. 

DELETE FROM table_name [WHERE Clause]

Example: Deleting from SQLite3 table using Python




# Import module
import sqlite3
 
# Connecting to sqlite
conn = sqlite3.connect('gfg.db')
 
# Creating a cursor object using
# the cursor() method
cursor = conn.cursor()
 
# Updating
cursor.execute('''DELETE FROM emp WHERE fname="Rishabh";''')
 
# Commit your changes in the database
conn.commit()
 
# Closing the connection
conn.close()

Output:

Deleting Table

DROP is used to delete the entire database or a table. It deleted both records in the table along with the table structure.

Syntax: 

DROP TABLE TABLE_NAME;

Example: Drop SQLite3 table using Python

Total tables in the gfg.db before dropping

Now let’s drop the Student table and then again check the total table in our database.




# Import module
import sqlite3
 
# Connecting to sqlite
conn = sqlite3.connect('gfg.db')
 
# Creating a cursor object using
# the cursor() method
cursor = conn.cursor()
 
# Updating
cursor.execute('''DROP TABLE Student;''')
 
# Commit your changes in the database
conn.commit()
 
# Closing the connection
conn.close()

Output:

Note: To learn more about SQLit3 with Python refer to our Python SQLite3 Tutorial. 


Article Tags :