Open In App

How to Insert Image in SQLite using Python?

In this article, we will discuss how to insert images in SQLite using sqlite3 module in Python.

Implementation:

1. Set the connection to the SQLite database using Python code.



sqliteConnection = sqlite3.connect('SQLite_Retrieving_data.db')
cursor = sqliteConnection.cursor()

2. We need to define an INSERT query for inserting the BLOB data into the table.  

sqlite_insert_blob_query = """ INSERT INTO Student
                                 (name, img) VALUES (?, ?)"""

3. Converting human-readable file into binary data by calling this convertToBinaryData() function, and storing it empPhoto variable,



empPhoto = convertToBinaryData(photo)

4. Once the file converted into binary format, now let’s convert data into tuple format,

data_tuple = (name, empPhoto)

5. Use cursor.execute() to execute a SELECT query in Python.  

cursor = sqliteConnection.cursor()
cursor.execute(sqlite_insert_blob_query, data_tuple)

6. Use sqliteConnection.commit() for saving the changes we made.  

sqliteConnection.commit()

7. Create a function that converts Human Readable data into the binary format for storing it into database.  

def convertToBinaryData(filename):

  # Convert binary format to images or files data
  with open(filename, 'rb') as file:
      blobData = file.read()
  return blobData

8. Close the cursor connection and MySQL database.

if sqliteConnection:
    sqliteConnection.close()
    print("the sqlite connection is closed")

Below is the implementation.




import sqlite3
  
  
# Function for Convert Binary Data 
# to Human Readable Format
def convertToBinaryData(filename):
      
    # Convert binary format to images 
    # or files data
    with open(filename, 'rb') as file:
        blobData = file.read()
    return blobData
  
  
def insertBLOB(name, photo):
    try:
          
        # Using connect method for establishing
        # a connection
        sqliteConnection = sqlite3.connect('SQLite_Retrieving_data.db')
        cursor = sqliteConnection.cursor()
        print("Connected to SQLite")
          
        # insert query
        sqlite_insert_blob_query = """ INSERT INTO Student
                                  (name, img) VALUES (?, ?)"""
          
        # Converting human readable file into 
        # binary data
        empPhoto = convertToBinaryData(photo)
          
        # Convert data into tuple format
        data_tuple = (name, empPhoto)
          
        # using cursor object executing our query
        cursor.execute(sqlite_insert_blob_query, data_tuple)
        sqliteConnection.commit()
        print("Image and file inserted successfully as a BLOB into a table")
        cursor.close()
  
    except sqlite3.Error as error:
        print("Failed to insert blob data into sqlite table", error)
      
    finally:
        if sqliteConnection:
            sqliteConnection.close()
            print("the sqlite connection is closed")
  
insertBLOB("Smith", "D:\Internship Tasks\GFG\images\One.png")
insertBLOB("David", "D:\Internship Tasks\GFG\images\person.png")

Output:

Output for above Python Program

Let’s check output in the database using SELECT query with proper format commands,

Output inside database


Article Tags :